89 votes

CoffeeScript Undefined

En javascript pour vérifier si une variable n'a jamais été créé, nous venons de le faire

if (typeof MyVariable !== "undefined"){ ... }

J'ai été me demande comment je fais qu'en coffeescript?... J'essaie quelque chose comme

if (MyVariable?false){ ... }

mais cette case si MyVariable est une fonction si de sorte que sera appel Mavariable(faux) si ce n'est que va appeler void(0) ou quelque chose comme ça.

163voto

Jaider Points 2366

Finalement, j'ai trouvé cette façon facile de le faire:

if (MyVariable?){ ... }

que va générer:

if (typeof MyVariable !== "undefined" && MyVariable !== null){ ... }

Mise à JOUR 04/07/2014 Le Lien De Démonstration

enter image description here

26voto

soundslikeneon Points 286

Tout d'abord, pour répondre à votre question:

if typeof myVariable isnt 'undefined' then # do stuff

Magrangs' solution fonctionne dans la plupart des cas, sauf quand il faut distinguer entre l'indéfini et false (par exemple, si mavariable peut être vrai, faux ou non-défini).

Et juste à point, vous ne devriez pas vous emballer vos conditions dans les parenthèses, et vous ne devriez pas être en utilisant des accolades.

L' then mot-clé peut être utilisé si tout est sur la même ligne, sinon utilisez l'indentation pour indiquer ce code est à l'intérieur de l'état.

if something  
    # this is inside the if-statement  
# this is back outside of the if-statement

Espérons que cette aide!

14voto

AJP Points 2645

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");
}

11voto

defaye Points 856
typeof MyVariable isnt "undefined" 

de js2coffee

9voto

LongYC Points 31

En plus de Jaider la réponse ci-dessus (je n'ai pas de commentaires en raison de l'insuffisance de la réputation), veillez à ce que c'est différent si c'est quelque chose à l'intérieur d'un objet/tableau:

someArray['key']?

seront convertis en:

someArray['key'] != null

Capture d'écran de js2coffee.org:

js2coffee.org

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X