Ich liebe Rubys ||=
Mechanismus. Wenn eine Variable nicht existiert oder existiert nil
, erstellen Sie sie und setzen Sie sie gleich:
amount # is nil
amount ||= 0 # is 0
amount ||= 5 # is 0
Ich muss jetzt etwas Ähnliches in JavaScript tun. Was ist die Konvention oder der richtige Weg, dies zu tun? Ich weiß, ||=
ist keine gültige Syntax. 2 offensichtliche Möglichkeiten, damit umzugehen, sind:
window.myLib = window.myLib || {};
// or
if (!window.myLib)
window.myLib = {};
quelle
Der Operator, nach dem Sie gefragt haben, wurde als Funktion in JavaScript vorgeschlagen . Es befindet sich derzeit in Phase 3 , ist also noch kein offizieller Teil der Sprache, wird jedoch akzeptiert, mit höchstens geringfügigen Änderungen, wenn größere unerwartete Probleme auftreten.
Sie können es jetzt mit dem Plugin-Vorschlag-logischen Zuweisungsoperator Babel-Plugin verwenden . Ich habe dieses Plugin noch nie benutzt, daher habe ich keine Ahnung, wie gut es funktioniert.
quelle
Ruby's || = Bedienerkurzschlusszuordnung. Man kann sich das so vorstellen:
In Javascript sieht das also sehr ähnlich aus:
Wie in den Kommentaren unten ausgeführt, scheint diese wörtliche Rubinform jedoch weniger effizient zu sein als das Standard-Javascript-Idiom a = a || b.
Als Referenz: http://www.rubyinside.com/what-rubys-double-pipe-or-equals-really-does-5488.html
quelle
a = a || b
Formular optimaler zu sein. Jsperf.com/x-or-x-equals-0-vs-x-equals-x-or-0/3a = a || b
.a || (a = b)
hat die richtige Semantik, um Funktionsnamen abzuleiten. Der neue Vorschlag wird derzeit diskutiert .Sie können das gewünschte Verhalten mit dem Operator | = in Javascript nur für Ganzzahlen erreichen. Aber Sie müssen zuerst die Variable definieren.
Für Objekte
Für Arrays
quelle
|
oder|=
. Das gewünschte Verhalten in der Frage hängt nicht mit bitweisen Operationen zusammen.