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 ifinstrução if myVaré verdade (isto é, avalia trueem condicional), enquanto o segundo executará o bloco se myVarhouver 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 ):
nullundefined0"" (a sequência vazia)falseNaNAqui 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 0ou NaNou 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 myVarfor igual a: false, 0, "", null, undefined, NaNou 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 myVarfor igual a nullou 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.
nullstrings.
value = JSON.parse(value)e, em seguida, usar o simples e adequada value != nullteste
se myVarfor 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?