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 MyVariablees 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 undefinedcuá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 != nullundefined? ¿O entonces debes recurrir aif typeof myVariable isnt 'undefined'?==y!=) en realidad tratannullyundefinedcomo valores iguales, por lo que enitem != nullrealidad prueban tanto paranullyundefinedal 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
thenpalabra 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
isntpalabra 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
MyVariableprimero, incluso si lo estableceMyVariablecomo 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) obligaundefineda 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? falseque hace que CoffeeScript lo verifique como una función debido afalseque cree que es un parámetro para ustedMyVariable, por ejemplo :Produce:
fuente
variable?ahora solo se compila en la variable! = null... !== nullcoffeescript.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
myVariableno se permita que sea un valor falso comonullo0.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.0yfalse. Lo cual, probablemente, no sea indeseado.