Em javascript para verificar se uma variável nunca foi criada, basta fazer
if (typeof MyVariable !== "undefined"){ ... }
Fiquei me perguntando como faço isso em coffeescript? ... Tento algo como
if (MyVariable?false){ ... }
mas esta verifica se MyVariable
é uma função que chamará MyVariable (false) se não chamar void (0) ou algo parecido.
coffeescript
undefined
Jaider
fonte
fonte
if MyVariable isnt undefined
que produzif (MyVariable !== void 0)
.Respostas:
Finalmente descobri esta maneira fácil de fazer isso:
isso irá gerar:
ATUALIZAÇÃO 07/04/2014 Link de demonstração
fonte
item != null
undefined
? Ou então você deve recorrer aif typeof myVariable isnt 'undefined'
?==
e!=
) realmente tratamnull
eundefined
como valores iguais, portanto,item != null
testam de fatonull
eundefined
ao mesmo tempo. Não, se estiver escrito comoitem !== null
.Primeiro, para responder à sua pergunta:
A solução de Magrangs funcionará na maioria dos casos, exceto quando você precisar distinguir entre undefined e false (por exemplo, se myVariable pode ser true, false ou undefined).
E só para ressaltar, você não deve envolver suas condições entre parênteses e não deve usar chaves.
A
then
palavra-chave pode ser usada se tudo estiver na mesma linha, caso contrário, use indentação para indicar qual código está dentro da condição.Espero que isto ajude!
fonte
isnt
palavra-chave é equivalente a!=
em Coffeescript e pode ser mais legível se você estiver acostumado com javascript.!==
, não!=
!=
em Coffee, que se traduz!==
em JavaScript.Esta resposta é para uma versão mais antiga do coffeescript. Veja a resposta de Jaider acima se quiser uma resposta mais atualizada (em julho de 2014)
Este coffeescript faz o que você quer, eu acho:
Que produz:
Nb se você fizer uma atribuição para
MyVariable
primeiro, mesmo se você definirMyVariable
como indefinido como neste código , então ele compila para:Eu acredito que isso funciona porque o
!=
usado por CoffeeScriptsExistential Operator
(o ponto de interrogação) coageundefined
a ser igual anull
.ps Você pode realmente começar
if (MyVariable?false){ ... }
a trabalhar? Ele não compila para mim a menos que haja um espaço entre o operador existencial e falso, ou seja, oMyVariable? false
que faz o CoffeeScript verificá-lo como uma função por causa dofalse
que ele pensa ser um parâmetro para o seuMyVariable
, por exemplo :Produz:
fonte
variable?
agora só compila para a variável! = null... !== null
coffeescript.org/#try:variable%3Fde js2coffee
fonte
Além da resposta de Jaider acima (não pude comentar devido à reputação insuficiente) , tome cuidado para que seja um caso diferente se for algo dentro de um objeto / array:
será convertido para:
Captura de tela de js2coffee.org :
fonte
Eu só uso:
Como undefined é falso, ele só fará as coisas se myVariable não for undefined.
Você apenas deve estar ciente de que ele 'fará coisas' para valores que são 0, "" e nulos
fonte
myVariable
não seja permitido ter um valor falso comonull
ou0
.A maneira mais limpa que encontrei de atribuir uma variável a uma variável indefinida e não nula é usando
unless
:fonte
myVar ?= 'val'
Por que não usar apenas o idioma OR?
Portanto, o resultado será igual a myVar, a menos que seja indefinido, caso em que será igual a 'val'.
fonte
''
,0.0
efalse
. O que provavelmente não é indesejado.