En javascript pour vérifier si une variable n'a jamais été créée, il suffit de faire
if (typeof MyVariable !== "undefined"){ ... }
Je me demandais comment je fais ça dans coffeescript? ... J'essaye quelque chose comme
if (MyVariable?false){ ... }
mais ce contrôle si MyVariable
est une fonction si c'est le cas qui appellera MyVariable (false) sinon cela appellera void (0) ou quelque chose comme ça.
coffeescript
undefined
Jaider
la source
la source
if MyVariable isnt undefined
ce qui produitif (MyVariable !== void 0)
.Réponses:
Enfin, j'ai trouvé ce moyen simple de le faire:
qui générera:
MISE À JOUR 04/07/2014 Lien Démo
la source
item != null
undefined
? Ou devez-vous alors recouririf typeof myVariable isnt 'undefined'
?==
et!=
) traitent en faitnull
etundefined
comme des valeurs égales, doncitem != null
testent réellement les deux pournull
etundefined
en même temps. Ce n'est pas le cas, si c'est écrititem !== null
.Tout d'abord, pour répondre à votre question:
La solution de Magrangs fonctionnera dans la plupart des cas, sauf lorsque vous devez faire la distinction entre undefined et false (par exemple, si myVariable peut être true, false ou undefined).
Et juste pour souligner, vous ne devriez pas mettre vos conditions entre parenthèses, et vous ne devriez pas utiliser d'accolades.
Le
then
mot-clé peut être utilisé si tout est sur la même ligne, sinon utilisez l'indentation pour indiquer le code à l'intérieur de la condition.J'espère que cela t'aides!
la source
isnt
mot clé est équivalent à!=
dans Coffeescript, et peut être plus lisible si vous êtes habitué à javascript.!==
, pas!=
!=
dans Coffee, qui se traduit par!==
en JavaScript.Cette réponse concerne une ancienne version de coffeescript. Voir la réponse de Jaider ci - dessus si vous voulez une réponse plus à jour (à partir de juillet 2014)
Ce coffeescript fait ce que vous voulez, je pense:
Ce qui produit:
Nb si vous faites une affectation en
MyVariable
premier, même si vous définissezMyVariable
sur undefined comme dans ce code , alors cela se compile en:Je pense que cela fonctionne parce que celui
!=
utilisé par CoffeeScriptsExistential Operator
(le point d'interrogation) obligeundefined
à être égal ànull
.ps Pouvez-vous réellement vous rendre
if (MyVariable?false){ ... }
au travail? Il ne compile pas pour moi à moins qu'il n'y ait un espace entre l'opérateur existentiel et false, c'est-à-direMyVariable? false
que CoffeeScript le vérifie comme une fonction à cause defalse
ce qu'il pense être un paramètre pour votreMyVariable
, par exemple :Produit:
la source
variable?
maintenant seulement compile à variable! = null... !== null
coffeescript.org/#try:variable%3Fde js2coffee
la source
En plus de la réponse de Jaider ci-dessus (je n'ai pas pu commenter en raison d'une réputation insuffisante) , faites attention que c'est un cas différent s'il s'agit de quelque chose à l'intérieur d'un objet / tableau:
sera converti en:
Capture d'écran de js2coffee.org :
la source
J'utilise juste:
Comme undefined est faux, il ne fera des choses que si myVariable n'est pas indéfini.
Vous devez juste être conscient qu'il fera des choses pour les valeurs 0, "" et nulles
la source
myVariable
n'est pas autorisée à être une valeur falsifiée commenull
ou0
.Le moyen le plus propre que j'ai trouvé pour affecter une variable à une variable non définie et non nulle consiste à utiliser
unless
:la source
myVar ?= 'val'
Pourquoi ne pas simplement utiliser l'idiome OR?
Ainsi, le résultat sera égal à myVar, à moins qu'il ne soit indéfini auquel cas il sera égal à «val».
la source
''
,0.0
etfalse
. Ce qui n'est probablement pas indésirable.