convertir coffee coffeescript undefined

coffeescript - coffee - js to coff



CoffeeScript indefinido (8)

En javascript para verificar si una variable nunca se creó, simplemente hacemos

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

Me preguntaba cómo hago eso en coffeescript? ... Intento algo así como

if (MyVariable?false){ ... }

pero esta comprobación si MyVariable es una función si es así que llamará a MyVariable (falso) si no va a llamar a void (0) o algo así.


¿Por qué no usar el idioma OR?

myVar or ''val''

Entonces, el resultado será igual a myVar, a menos que no esté definido, en cuyo caso será igual a ''val''.


Además de la respuesta anterior de Jaider (no pude hacer ningún comentario debido a una reputación insuficiente) , tenga cuidado de que sea un caso diferente si es algo dentro de un objeto / matriz:

someArray[''key'']?

se convertirá en:

someArray[''key''] != null

Captura de pantalla de js2coffee :


Finalmente encontré esta manera fácil de hacerlo:

if (MyVariable?){ ... }

eso generará:

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

ACTUALIZACIÓN 04/07/2014 Demo Link


La forma más limpia que he encontrado para asignar una variable a una variable no nula y no definida es usar a unless :

unless ( myVar? ) myVar = ''val''


Primero, para responder a tu pregunta:

if typeof myVariable isnt ''undefined'' then # do stuff

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 deberías estar envolviendo tus condiciones entre paréntesis, y no deberías estar usando llaves.

La palabra clave then se puede usar si todo está en la misma línea; de lo contrario, use indentación para indicar qué código está dentro de la condición.

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

¡Espero que esto ayude!


Solo uso:

if (myVariable) //do stuff

Como undefined es falso, solo hará cosas si myVariable no está indefinido.

Solo tienes que ser consciente de que ''hará cosas'' para valores que son 0, "" y nulo


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)

Creo que este coffeescript hace lo que quiere:

if not MyVariable? MyVariable = "assign a value"

Que produce:

if (!(typeof MyVariable !== "undefined" && MyVariable !== null)) { MyVariable = "assign a value"; }

Nb si primero realiza una asignación a MyVariable , incluso si establece MyVariable en undefined como en este código , entonces se compila para:

if (!(MyVariable != null)) { MyVariable = "assign a value"; }

Creo que esto funciona porque el != Utilizado por CoffeeScripts Existential Operator (el signo de interrogación) coacciona undefined para que sea igual a null .

ps ¿Se puede obtener if (MyVariable?false){ ... } funciona? No compila para mí a menos que haya un espacio entre el operador existencial y falso, es decir, MyVariable? false MyVariable? false que luego hace que CoffeeScript lo compruebe como una función debido a la false que cree que es un parámetro para su MyVariable , por ejemplo :

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"

Produce:

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


typeof MyVariable isnt "undefined"

de js2coffee