Fancy For Loops
możesz użyć standardowej pętli dla niestandardowych sposobów
for ( a; b; c )
jest zasadniczo równoważny z:
a;
while ( b )
{
...
c;
}
więc dobrą sztuczką jest napisanie kodu w whilepętli, a następnie podzielenie go na a,b,cczęści w forpętli.
Kilka przykładów , które napisałem :
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);
Połącz swoje setery
Jeśli inicjujesz lub resetujesz wiele wartości, połącz wartość ze wszystkimi potrzebnymi zmiennymi:
a=b=1;
Implicit Casting
Nie sprawdzaj typów, po prostu używaj ich takimi, jakie są. parseInt()kosztuje 10postacie. Jeśli chcesz odrzucić ciąg, bądź kreatywny:
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;
Unikaj średników
JavaScript ma automatyczne wstawianie średników. Używaj go często i dobrze.
Jednowarstwowe
Zaoszczędź na nawiasach, umieszczając jak najwięcej w pojedynczych wierszach lub parametrach:
a( realParam1, realParam2, fizz='buzz' )
Operatory inkrementacji / dekrementacji
a = a - 1;
foo(a);
i
foo(a);
a = a - 1;
można łatwo przepisać jako
foo(--a);
i
foo(a--);
odpowiednio, kolejno.
Użyj thislub selfzamiast windoww kontekście globalnym
oczywiste oszczędności 2 znaków.
Użyj notacji w nawiasach, aby uzyskać dostęp do powtarzanych właściwości
Jest to z pewnością równowaga między długością nazwy nieruchomości a liczbą dostępów. Zamiast wywoływać a.longFunctionName()dwukrotnie notację kropkową, krótsze jest zapisanie nazwy i wywołanie funkcji za pomocą notacji nawiasowej:
a.longFunctionName(b)
a.longFunctionName(c)
//42
-vs-
a[f='longFunctionName'](b)
a[f](c)
//34
jest to szczególnie skuteczne w przypadku funkcji, document.getElementByIdktóre można zredukować do d[e].
Uwaga:
Przy zapisie w nawiasie 6 + name.lengthza pierwszym razem koszt to znaki. Każdy kolejny dostęp ma koszt 3znaków.
W przypadku notacji kropkowej wszystkie wejścia kosztują name.length + 1(+1 dla .) znaków.
Użyj tej metody, jeśli 6 + name.length + (3 * (accesses - 1)) < accesses * (name.length + 1).
len = długość nazwy właściwości
i = minimalny dostęp, aby skorzystać
len | i
========
1 | ∞
2 | ∞
3 | 7
4 | 4
5 | 3
6 | 3
7 | 3
8+ | 2
Liczba dostępów może również obejmować wiele obiektów. Jeśli uzyskujesz dostęp .length4 lub więcej razy na różnych tablicach, możesz użyć tej samej zmiennej przechowującej ciąg 'length'.
var)? I czy kod JavaScript do golfa powinien być funkcją, czy wyświetlać coś bezpośrednio? Szczerze uważam, że może to mieć duże znaczenie.