Lust auf Loops
Sie können die standard for-Schleife auf nicht standardmäßige Weise verwenden
for ( a; b; c )
ist im Wesentlichen gleichbedeutend mit:
a;
while ( b )
{
...
c;
}
Ein guter Trick ist es, den Code mit einer while
Schleife zu schreiben und ihn dann in die a,b,c
Teile einer for
Schleife zu teilen .
Ein paar Beispiele, die ich geschrieben habe :
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);
Verkette deine Setter
Wenn Sie mehrere Werte initialisieren oder zurücksetzen, verketten Sie den Wert mit allen Variablen, die ihn benötigen:
a=b=1;
Implizites Casting
Überprüfen Sie Ihre Typen nicht, sondern verwenden Sie sie so, wie sie sind. parseInt()
kostet 10
Zeichen. Wenn Sie aus einer Zeichenfolge streichen müssen, müssen Sie kreativ sein:
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;
Vermeiden Sie Semikolons
JavaScript verfügt über eine automatische Semikoloneinfügung. Verwenden Sie es oft und gut.
Einzeiler
Sparen Sie an den Klammern, indem Sie so viel wie möglich in einzelne Zeilen oder Parameter schieben:
a( realParam1, realParam2, fizz='buzz' )
Increment / Decrement-Operatoren
a = a - 1;
foo(a);
und
foo(a);
a = a - 1;
kann leicht umgeschrieben werden als
foo(--a);
und
foo(a--);
beziehungsweise.
Verwenden Sie this
oder self
anstelle von window
im globalen Kontext
Selbsterklärende 2-Zeichen-Ersparnis.
Verwenden Sie die Klammernotation für den wiederholten Zugriff auf Eigenschaften
Dies ist definitiv ein Spagat zwischen der Länge des Eigenschaftsnamens und der Anzahl der Zugriffe. Anstatt a.longFunctionName()
zweimal mit Punktnotation aufzurufen , ist es kürzer, den Namen zu speichern und die Funktion in Klammern aufzurufen:
a.longFunctionName(b)
a.longFunctionName(c)
//42
-vs-
a[f='longFunctionName'](b)
a[f](c)
//34
Dies ist besonders effektiv bei Funktionen, auf document.getElementById
die reduziert werden kann d[e]
.
Hinweis:
Bei Verwendung der Klammernotation sind die Kosten 6 + name.length
beim ersten Mal Zeichen. Jeder weitere Zugriff kostet 3
Zeichen.
Bei der Punktnotation kosten alle Zugriffe name.length + 1
(+1 für die .
) Zeichen.
Verwenden Sie diese Methode, wenn 6 + name.length + (3 * (accesses - 1)) < accesses * (name.length + 1)
.
len = Länge des Eigenschaftsnamens
i = Mindestzugriffe, um die Vorteile zu nutzen
len | i
========
1 | ∞
2 | ∞
3 | 7
4 | 4
5 | 3
6 | 3
7 | 3
8+ | 2
Die Anzahl der Zugriffe kann auch mehrere Objekte umfassen. Wenn Sie .length
in verschiedenen Arrays mindestens viermal zugreifen , können Sie dieselbe Variable verwenden, die die Zeichenfolge enthält 'length'
.
var
) zu schreiben. Und sollte JavaScript Golf Code eine Funktion sein oder etwas direkt ausgeben? Ich denke ehrlich, das kann viel bewirken.