En javascript para verificar si nunca se creó una variable, simplemente lo hacemos
if (typeof MyVariable !== "undefined"){ ... }
Me preguntaba cómo hago eso en coffeescript ... Intento algo como
if (MyVariable?false){ ... }
pero esta verificación si MyVariable
es una función, si es así, llamará a MyVariable (falso) si no, llamará a void (0) o algo así.
coffeescript
undefined
Jaider
fuente
fuente
if MyVariable isnt undefined
cuál produceif (MyVariable !== void 0)
.Respuestas:
Finalmente encontré esta manera fácil de hacerlo:
que generará:
ACTUALIZACIÓN 07/04/2014 Enlace de demostración
fuente
item != null
undefined
? ¿O entonces debes recurrir aif typeof myVariable isnt 'undefined'
?==
y!=
) en realidad tratannull
yundefined
como valores iguales, por lo que enitem != null
realidad prueban tanto paranull
yundefined
al mismo tiempo. No es así, si está escrito comoitem !== null
.Primero, para responder a su pregunta:
La solución de Magrangs funcionará en la mayoría de los casos, excepto cuando necesite distinguir entre indefinido y falso (por ejemplo, si myVariable puede ser verdadero, falso o indefinido).
Y solo para señalar, no debe envolver sus condiciones entre paréntesis, y no debe usar llaves.
La
then
palabra clave se puede usar si todo está en la misma línea; de lo contrario, use sangría para indicar qué código está dentro de la condición.¡Espero que esto ayude!
fuente
isnt
palabra clave es equivalente a!=
en Coffeescript y puede ser más legible si está acostumbrado a JavaScript.!==
, no!=
!=
en Coffee, que se traduce!==
en JavaScript.Esta respuesta es para una versión anterior de coffeescript. Consulte la respuesta de Jaider anterior si desea una respuesta más actualizada (a partir de julio de 2014)
Este coffeescript hace lo que quieres, creo:
Que produce:
Nb, si realiza una asignación a
MyVariable
primero, incluso si lo estableceMyVariable
como indefinido como en este código , entonces esto se compila en:Creo que esto funciona porque el
!=
utilizado por CoffeeScriptsExistential Operator
(el signo de interrogación) obligaundefined
a ser igual anull
.ps ¿Puedes realmente ir
if (MyVariable?false){ ... }
a trabajar? No se compila para mí a menos que haya un espacio entre el operador existencial y falso, es decir, loMyVariable? false
que hace que CoffeeScript lo verifique como una función debido afalse
que cree que es un parámetro para ustedMyVariable
, por ejemplo :Produce:
fuente
variable?
ahora solo se compila en la variable! = null... !== null
coffeescript.org/#try:variable%3Fde js2coffee
fuente
Además de la respuesta de Jaider anterior (no pude comentar debido a una reputación insuficiente) , tenga cuidado de que sea un caso diferente si es algo dentro de un objeto / matriz:
se convertirá a:
Captura de pantalla de js2coffee.org :
fuente
Yo solo uso:
Como indefinido es falso, solo hará cosas si myVariable no está indefinido.
Solo debe tener en cuenta que "hará cosas" para los valores que sean 0, "" y nulos.
fuente
myVariable
no se permita que sea un valor falso comonull
o0
.La forma más limpia que he encontrado para asignar una variable a una variable indefinida y no nula es usando
unless
:fuente
myVar ?= 'val'
¿Por qué no usar el modismo OR?
Por lo tanto, el resultado será igual a myVar, a menos que no esté definido, en cuyo caso será igual a 'val'.
fuente
''
,0.0
yfalse
. Lo cual, probablemente, no sea indeseado.