Cette coffeescript est-ce que vous voulez, je pense que:
if not MyVariable?
MyVariable = "assign a value"
Qui produit:
if (!(typeof MyVariable !== "undefined" && MyVariable !== null)) {
MyVariable = "assign a value";
}
N. b. si vous faites une cession à l' MyVariable
tout d'abord, même si vous définissez MyVariable
undefined comme dans ce code, puis cette compile:
if (!(MyVariable != null)) {
MyVariable = "assign a value";
}
Je crois que cela fonctionne parce que l' !=
utilisé par CoffeeScripts Existential Operator
(le point d'interrogation) contraint undefined
être égale à null
.
p.s. Vous pouvez réellement obtenir de l' if (MyVariable?false){ ... }
de travail? Il ne compile pas pour moi, si il y a un espace entre l'opérateur existentiel et faux c'est à dire MyVariable? false
ce qui permet alors CoffeeScript vérifier, comme une fonction à cause de l' false
qu'il pense est un paramètre MyVariable
, par exemple:
if MyVariable? false
alert "Would have attempted to call MyVariable as a function"
else
alert "but didn't call MyVariable as it wasn't a function"
Produit:
if (typeof MyVariable === "function" ? MyVariable(false) : void 0) {
alert("Would have attempted to call MyVariable as a function");
} else {
alert("but didn't call MyVariable as it wasn't a function");
}