Fancy cho vòng lặp
bạn có thể sử dụng vòng lặp tiêu chuẩn theo những cách không chuẩn
for ( a; b; c )
về cơ bản là tương đương với:
a;
while ( b )
{
...
c;
}
Vì vậy, một mẹo hay là viết mã của bạn bằng một while
vòng lặp, và sau đó chia nó thành các a,b,c
phần trong một for
vòng lặp.
Một vài ví dụ tôi đã viết :
for(x=y=n;!z;x--,y++)z=i(x)?x:i(y)?y:0
for(a=b=1;b<n;c=a+b,a=b,b=c);
Xâu chuỗi setters của bạn
Nếu bạn đang khởi tạo hoặc đặt lại nhiều giá trị, hãy xâu chuỗi giá trị cho tất cả các biến cần:
a=b=1;
Đúc ngầm
Đừng kiểm tra các loại của bạn, chỉ cần sử dụng chúng như chúng là. parseInt()
chi phí 10
nhân vật. Nếu bạn cần bỏ chuỗi, hãy sáng tạo:
a='30';
b='10';
c = a + b; //failure
c = parseInt(a) + parseInt(b) //too long
c = -(-a-b); //try these
c = ~~a+~~b;
c = +a+ +b;
c = a- -b;
Tránh dấu chấm phẩy
JavaScript có chèn nửa dấu chấm tự động. Sử dụng nó thường xuyên và tốt.
Một lớp lót
Lưu vào dấu ngoặc bằng cách đẩy càng nhiều càng tốt vào các dòng đơn hoặc tham số:
a( realParam1, realParam2, fizz='buzz' )
Toán tử tăng / giảm
a = a - 1;
foo(a);
và
foo(a);
a = a - 1;
có thể dễ dàng được viết lại như
foo(--a);
và
foo(a--);
tương ứng.
Sử dụng this
hoặc self
thay vì window
trong bối cảnh toàn cầu
tự giải thích tiết kiệm 2 ký tự.
Sử dụng ký hiệu ngoặc để truy cập thuộc tính lặp lại
Đây chắc chắn là một hành động cân bằng giữa chiều dài tên tài sản và số lượng truy cập. Thay vì gọi a.longFunctionName()
bằng ký hiệu dấu chấm hai lần, sẽ ngắn hơn để lưu tên và gọi hàm thông qua ký hiệu ngoặc:
a.longFunctionName(b)
a.longFunctionName(c)
//42
-vs-
a[f='longFunctionName'](b)
a[f](c)
//34
điều này đặc biệt hiệu quả với các chức năng như document.getElementById
có thể được giảm xuống d[e]
.
Ghi chú:
Với ký hiệu ngoặc, chi phí là 6 + name.length
ký tự lần đầu tiên. Mỗi lần truy cập tiếp theo có một chi phí của các 3
ký tự.
Đối với ký hiệu dấu chấm, tất cả các truy cập chi phí name.length + 1
(+1 cho các .
ký tự).
Sử dụng phương pháp này nếu 6 + name.length + (3 * (accesses - 1)) < accesses * (name.length + 1)
.
len = chiều dài tên tài sản
i = truy cập tối thiểu để tận dụng
len | i
========
1 | ∞
2 | ∞
3 | 7
4 | 4
5 | 3
6 | 3
7 | 3
8+ | 2
Số lượng truy cập cũng có thể trải rộng trên nhiều đối tượng. Nếu bạn truy cập .length
4 lần trở lên trên các mảng khác nhau, bạn có thể sử dụng cùng một biến giữ chuỗi 'length'
.
var
) không? Và mã golf JavaScript có phải là một hàm hoặc xuất ra một cái gì đó trực tiếp không? Tôi thành thật nghĩ rằng điều này có thể làm cho nhiều sự khác biệt.