Welche Tricks kennen Sie, um den CoffeeScript-Code zu verkürzen?
CoffeeScript ist eine Sprache, die in JavaScript kompiliert wird ("transpiliert" in ES3, um genau zu sein). Die goldene Regel lautet "Es ist nur JavaScript", was bedeutet, dass kein Laufzeitaufwand entsteht. Die meisten Tipps und Tricks zu JavaScript gelten ebenfalls.
Als Nebeneffekt bedeutet dies auch: Entwickler aus JavaScript (einschließlich meiner selbst) verwenden in der Regel JavaScript-Konstrukte anstelle kürzerer CoffeeScript-Alternativen.
Dieser Thread konzentriert sich auf Tipps, die für CoffeeScript spezifisch sind.
Links zu verwandten Themen:
yield
, wird es in ES6-Generator kompiliert. Andernfalls wird versucht, so browserkonform wie möglich zu sein.Antworten:
Verwenden Sie Destrukturierungszuweisungen, wenn häufig Strukturelemente verwendet werden
Z.B. Elemente des ersten Argumentarrays abrufen
Dies kann mit Splats kombiniert werden
quelle
Kurzschlussauswertung anstelle des ternären Bedieners
CoffeeScript verfügt nicht über den ternären Operator von JavaScript. Manchmal kann jedoch stattdessen
?
die Funktionalität der Kurzschlussbewertung verwendet werden:Ist etwas äquivalent zu in JavaScript:
Es funktioniert nicht , wenn b ein falscher Wert ist (oder auswerten kann), wie z
0
.quelle
Integer Division Operator
//
Spart bis zu 10 Bytes, da beim Teilen keine Floor-Nummern erforderlich sind.
Verwenden des
//
Operators:Im Vergleich zu JavaScript:
quelle
(61/3|0)
funktioniert genauso gut für Vanille JS.//
ist eigentlicha .floor()
, also funktioniert es anders für negative Zahlen :foo = -61//3 # -21
, whilefoo = -61/3|0 # -20
//1
für einen einfachen Boden verwenden.Lassen Sie nach Möglichkeit Klammern weg
quelle
Nicht
null
aber möglicherweise falsy (0
,NaN
,""
,false
, etc.)Wenn Sie überprüfen müssen, ob eine Variable definiert ist und nicht
null
, verwenden Sie das nachfolgende Fragezeichen:Kompiliert zu:
Dies gilt wahrscheinlich nicht für viele Code-Golf-Einträge, kann jedoch nützlich sein, wenn Sie von einer Null, einer falschen, einer leeren Zeichenfolge oder einem anderen falschen Wert unterscheiden müssen.
quelle
Potenzierungsoperator
**
Spart 9 Bytes:
Im Vergleich zu JavaScript:
quelle
1<<x
es gleich ist2**x
Arrays suchen
Speichern Sie ungefähr 8 Bytes, wenn Sie nur überprüfen möchten, ob sich ein Element in einem Array befindet. Sie können den
in
Operator verwenden.Im Vergleich zu Alternativen in JavaScript:
In dem seltenen Fall, dass Sie den Index des Elements benötigen, funktioniert dieser Trick jedoch nicht für Sie.
quelle
b = c in'|-+'
Platz macht Spaß. Der Speicherplatz ist für das Aufrufen von Funktionen von Bedeutung
quelle
Verwenden Sie Splats
quelle
Sichere Accessoren:
?.
undfunc? args...
Existenzieller Operator
?
hat viele Formen und Verwendungen. Abgesehen davon, dass nur geprüft wird, ob eine Variable festgelegt ist, können Sie auf Objektmethoden und -eigenschaften zugreifen, ohne vorher zu prüfen, ob das Objekt null ist:wird
obj.property.method args...
nur ausgeführt, wennobj.property
undobj.property.method
definiert sind und nicht null.Nützlich, wenn Sie mehrere spärliche Arrays gleichzeitig durchlaufen:
quelle