In Javascript überprüfen wir einfach, ob eine Variable nie erstellt wurde
if (typeof MyVariable !== "undefined"){ ... }
Ich habe mich gefragt, wie ich das in Coffeescript mache? ... Ich versuche so etwas
if (MyVariable?false){ ... }
Diese Überprüfung, ob dies MyVariable
eine Funktion ist, ruft MyVariable (false) auf, wenn nicht, ruft sie void (0) oder ähnliches auf.
coffeescript
undefined
Jaider
quelle
quelle
if MyVariable isnt undefined
welche produziertif (MyVariable !== void 0)
.Antworten:
Endlich habe ich diesen einfachen Weg gefunden:
das wird erzeugen:
UPDATE 04/07/2014 Demo Link
quelle
item != null
undefined
? Oder müssen Sie dann darauf zurückgreifenif typeof myVariable isnt 'undefined'
?==
und!=
) behandeln tatsächlichnull
undundefined
als gleiche Werte, testen alsoitem != null
tatsächlich sowohl fürnull
als auchundefined
gleichzeitig. Es tut nicht, wenn es geschrieben ist alsitem !== null
.Um Ihre Frage zu beantworten:
Die Lösung von Magrangs funktioniert in den meisten Fällen, außer wenn Sie zwischen undefiniert und falsch unterscheiden müssen (z. B. wenn myVariable wahr, falsch oder undefiniert sein kann).
Und nur um darauf hinzuweisen, sollten Sie Ihre Bedingungen nicht in Klammern setzen und keine geschweiften Klammern verwenden.
Das
then
Schlüsselwort kann verwendet werden, wenn sich alles in derselben Zeile befindet. Andernfalls verwenden Sie Einrückungen, um anzugeben, welcher Code sich in der Bedingung befindet.Hoffe das hilft!
quelle
isnt
Schlüsselwort entspricht!=
Coffeescript und ist möglicherweise besser lesbar, wenn Sie an Javascript gewöhnt sind.!==
nicht!=
!=
in Coffee, was!==
in JavaScript übersetzt wird.Diese Antwort gilt für eine ältere Version von Coffeescript. Siehe Jaiders Antwort oben, wenn Sie eine aktuellere Antwort wünschen (Stand Juli 2014).
Dieses Coffeescript macht, was Sie wollen, denke ich:
Welches produziert:
Nb Wenn Sie zuerst eine Zuweisung vornehmen
MyVariable
, auch wenn SieMyVariable
wie in diesem Code auf undefiniert gesetzt haben , wird dies kompiliert zu:Ich glaube, das funktioniert, weil das
!=
von CoffeeScripts verwendeteExistential Operator
(das Fragezeichen) dazu zwingtundefined
, gleich zu seinnull
.ps Kannst du tatsächlich
if (MyVariable?false){ ... }
zur Arbeit gehen? Es wird für mich nicht kompiliert, es sei denn, zwischen dem existenziellen Operator und false steht ein Leerzeichen, dhMyVariable? false
CoffeeScript überprüft es dann wie eine Funktion, dafalse
es seiner Meinung nach ein Parameter für Sie istMyVariable
, zum Beispiel :Produziert:
quelle
variable?
kompiliert jetzt nur noch zu variable! = null... !== null
immervon js2coffee
quelle
Achten Sie zusätzlich zu Jaiders Antwort oben (ich konnte aufgrund unzureichender Reputation keinen Kommentar abgeben) darauf , dass es sich um einen anderen Fall handelt, wenn es sich um etwas in einem Objekt / Array handelt:
wird konvertiert zu:
Screenshot von js2coffee.org :
quelle
Ich benutze nur:
Da undefiniert falsch ist, wird es nur dann funktionieren, wenn myVariable nicht undefiniert ist.
Sie müssen sich nur bewusst sein, dass es für Werte, die 0, "" und null sind, "Sachen macht"
quelle
myVariable
es sich nicht um einen falschen Wert wienull
oder handelt0
.Der sauberste Weg, eine Variable einer undefinierten und nicht null Variablen zuzuweisen, ist
unless
:quelle
myVar ?= 'val'
Warum nicht einfach die ODER-Sprache verwenden?
Das Ergebnis entspricht also myVar, es sei denn, es ist undefiniert. In diesem Fall entspricht es 'val'.
quelle
''
,0.0
undfalse
. Welches ist wahrscheinlich nicht unerwünscht.