Eu sei que abaixo estão as duas maneiras no JavaScript para verificar se uma variável não é null
, mas estou confuso qual é a melhor prática a ser usada.
Eu deveria fazer:
if (myVar) {...}
ou
if (myVar !== null) {...}
Eu sei que abaixo estão as duas maneiras no JavaScript para verificar se uma variável não é null
, mas estou confuso qual é a melhor prática a ser usada.
Eu deveria fazer:
if (myVar) {...}
ou
if (myVar !== null) {...}
Respostas:
Eles não são equivalentes. O primeiro executará o bloco após a if
instrução if myVar
é verdade (isto é, avalia true
em condicional), enquanto o segundo executará o bloco se myVar
houver algum valor diferente de null
.
Os únicos valores que não são verdadeiros no JavaScript são os seguintes (também conhecidos como valores falsos ):
null
undefined
0
""
(a sequência vazia)false
NaN
Aqui está como você pode testar se uma variável não é NULL:
if (myVar !== null) {...}
o bloco será executado se myVar não for nulo .. será executado se myVar for indefinido ou falso 0
ou NaN
ou qualquer outra coisa ..
("")
e indefinida. Veja meu violino como referência: jsfiddle.net/b0tm7yaf
Leia este post: http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
Ele tem algumas dicas legais para JavaScript em geral, mas uma coisa mencionada é que você deve procurar nulos como:
if(myvar) { }
Ele também menciona o que é considerado 'falsey' que você pode não perceber.
if(myVar) { code }
NÃO será executado apenas quando myVar
for igual a: false, 0, "", null, undefined, NaN
ou você nunca definiu a variável myVar
(então, adicionalmente, o código interrompe a execução e lança a exceção).if(myVar !== null) {code}
NÃO será executado apenas quando myVar
for igual a null
ou você nunca o definiu (lança exceção).Aqui você tem todos ( src )
E se
== (sua negação ! = )
=== (sua negação ! == )
Há outro cenário possível que acabei de encontrar.
Fiz uma chamada ajax e recuperei os dados como nulos, em um formato de string. Eu tive que verificar assim:
if(value != 'null'){}
Portanto, null era uma string que dizia "null" em vez de realmente ser nula.
Edição: Deve-se entender que eu não estou vendendo isso da maneira que deve ser feito. Eu tive um cenário em que essa era a única maneira de fazer isso. Não sei por que ... talvez o cara que escreveu o back-end estivesse apresentando os dados incorretamente, mas, independentemente disso, é a vida real. É frustrante ver esse voto negativo de alguém que entende que isso não está certo e, em seguida, votado por alguém que realmente ajuda.
null
strings.
value = JSON.parse(value)
e, em seguida, usar o simples e adequada value != null
teste
se myVar
for nulo, se o bloco não for executado de outra maneira, ele será executado.
if (myVar != null) {...}
'null'
, mas o valor especial null
.
As duas instruções condicionais listadas aqui não são melhores que as outras. Seu uso depende da situação. Você tem um erro de digitação a propósito no segundo exemplo. Deve haver apenas um sinal de igual após o ponto de exclamação.
O primeiro exemplo determina se o valor em myVar é verdadeiro e executa o código dentro do {...}
O segundo exemplo avalia se myVar não é igual a nulo e se esse for o caso, ele executará seu código dentro do {...}
Sugiro dar uma olhada nas declarações condicionais para obter mais técnicas. Quando você estiver familiarizado com eles, poderá decidir quando precisar deles.
=
é crucial e faz uma enorme diferença para a questão. Talvez você não esteja ciente da existência !==
e dos ===
operadores em JavaScript?