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) {...}
javascript
comparison
null-check
nickb
fonte
fonte
Respostas:
Eles não são equivalentes. O primeiro executará o bloco após a
if
instrução ifmyVar
é verdade (isto é, avaliatrue
em condicional), enquanto o segundo executará o bloco semyVar
houver algum valor diferente denull
.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
fonte
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
ouNaN
ou qualquer outra coisa ..fonte
("")
e indefinida. Veja meu violino como referência: jsfiddle.net/b0tm7yafLeia 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:
Ele também menciona o que é considerado 'falsey' que você pode não perceber.
fonte
if(myVar) { code }
NÃO será executado apenas quandomyVar
for igual a:false, 0, "", null, undefined, NaN
ou você nunca definiu a variávelmyVar
(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 quandomyVar
for igual anull
ou você nunca o definiu (lança exceção).Aqui você tem todos ( src )
E se
== (sua negação ! = )
=== (sua negação ! == )
fonte
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:
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.
fonte
null
strings.value = JSON.parse(value)
e, em seguida, usar o simples e adequadavalue != null
testese
myVar
for nulo, se o bloco não for executado de outra maneira, ele será executado.if (myVar != null) {...}
fonte
'null'
, mas o valor especialnull
.Às vezes, se não foi definido, é melhor estar preparado. Para isso eu usei typeof
fonte
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.
fonte
=
é 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?