Como posso verificar valores nulos em JavaScript? Eu escrevi o código abaixo, mas não funcionou.
if (pass == null || cpass == null || email == null || cemail == null || user == null) {
alert("fill all columns");
return false;
}
E como posso encontrar erros nos meus programas JavaScript?
javascript
null
compare
Mahdi_Nine
fonte
fonte
null
em js deve ser feito com o operador estrito===
Respostas:
Javascript é muito flexível no que diz respeito à verificação de valores "nulos". Suponho que você esteja realmente procurando por cadeias vazias; nesse caso, esse código mais simples funcionará:
Que irá verificar se há cadeias vazias (
""
),null
,undefined
,false
e os números0
eNaN
Observe que, se você estiver procurando especificamente por números, é um erro comum errar
0
com esse método enum !== 0
é preferido (num !== -1
ou~num
(código hacky que também controla-1
)) funções que retornam-1
, por exemploindexOf
)fonte
!
ou!!
para testarnull
ouundefined
em dados normalmente-numérico menos que você também quer jogar fora os valores de 0.0
...". Acredito que esta resposta seja perfeitamente apropriada para a pergunta, dado o contexto (que estou deduzindo é "nome de usuário, senha, email"), eles não estão verificando0
valores. Dada a popularidade desta pergunta e resposta, no entanto, concordo que vale a pena mencionar na própria resposta.Para verificar se há nulo ESPECIFICAMENTE, você usaria isso:
Este teste apenas passar para
null
e não vai passar para""
,undefined
,false
,0
, ouNaN
.Além disso, forneci verificações absolutas para cada valor "falso" (um que retornaria verdadeiro para
!variable
).Observe que, para algumas verificações absolutas, você precisará implementar o uso de
absolutely equals: ===
etypeof
.Eu criei um JSFiddle aqui para mostrar todos os testes individuais funcionando
Aqui está a saída de cada verificação:
Como você pode ver, é um pouco mais difícil testar
NaN
;fonte
===
igualdade estrita? Obrigado. Também para o teste NaN, você pode usarisNaN(value)
isso retornarátrue
apenas se a variável for igual a NaN.variable === null
mas não é do tipo "objeto"? Se não houver, por que não simplificar a verificaçãovariable === null
, jogando fora o segundo conjunto? Obrigado.variable === null
que acabei de testar aqui neste JSFiddle . A razão pela qual eu também usei `&& typeof variable === 'object' 'não foi apenas para ilustrar o fato interessante de que umnull
valor é um typeofobject
, mas também para acompanhar o fluxo das outras verificações. Mas sim, em conclusão, você pode usar com segurançavariable === null
.basta substituir o
==
com===
em todos os lugares.==
é uma comparação de igualdade livre ou abstrata===
é uma comparação estrita da igualdadeVeja o artigo da MDN sobre comparações de igualdade e igualdade para obter mais detalhes.
fonte
undefined
que nãonull
. Caso contrário, isso levará a um comportamento inesperado. Geralmente, se você estiver interessado em ambosnull
/undefined
mas os valores não Falsas, então use==
(um dos poucos casos em que você deve fazê-lo).undefined
não énull
: stackoverflow.com/a/5076962/753237Operador de igualdade estrita: -
Podemos verificar nulo por
===
Apenas usando
if
será avaliado como true se o valor não for :
fonte
Aprimoramento sobre a resposta aceita verificando explicitamente,
null
mas com uma sintaxe simplificada:fonte
Primeiro, você tem uma declaração de retorno sem um corpo de função. As chances são de que isso gerará um erro.
Uma maneira mais limpa de fazer sua verificação seria simplesmente usar o! operador:
fonte
você pode usar tentar pegar finalmente
você também pode ter
throw
seus próprios erros. Veja isso .fonte
Em JavaScript, nenhuma string é igual a
null
.Talvez você esperasse
pass == null
ser verdadeiro quandopass
houver uma sequência vazia, porque você sabe que o operador de igualdade frouxa==
executa certos tipos de coerção de tipo.Por exemplo, esta expressão é verdadeira:
Por outro lado, o operador de igualdade estrita
===
diz que isso é falso:Dado que
''
e0
são fracamente iguais, você pode razoavelmente conjeturar isso''
enull
são fracamente iguais. No entanto, eles não são.Esta expressão é falsa:
O resultado da comparação de qualquer cadeia de caracteres
null
é falso. Portanto,pass == null
e todos os seus outros testes são sempre falsos, e o usuário nunca recebe o alerta.Para corrigir seu código, compare cada valor com a sequência vazia:
Se você tiver certeza de que
pass
é uma sequência,pass == ''
também funcionará porque apenas uma sequência vazia é fracamente igual à sequência vazia. Por outro lado, alguns especialistas dizem que é uma boa prática sempre usar igualdade estrita no JavaScript, a menos que você queira especificamente fazer a coerção de tipo que o operador de igualdade frouxa executa.Se você deseja saber quais pares de valores são fracamente iguais, consulte a tabela "Comparações de similaridade" no artigo da Mozilla sobre este tópico .
fonte
para verificar indefinido e nulo em javascript, basta escrever o seguinte:
fonte
Este é um comentário sobre a solução do WebWanderer sobre a verificação de NaN (ainda não tenho representante suficiente para deixar um comentário formal). A solução lê como
mas isso falhará em números racionais que arredondariam para
0
, comovariable = 0.1
. Um teste melhor seria:fonte
parseInt
paraparseFloat
(o que deveria ter sido óbvio para mim em primeiro lugar). Evitei usar aisNan
função porque sinto que muitos desenvolvedores veem funçõesisNaN
como algum tipo de "caixa mágica" em que os valores entram e os booleanos saem, e eu queria testar um pouco mais a fundo. Mas sim, seu teste sugerido funcionará e é perfeitamente adequado para uso. Desculpe, não notei sua postagem até agora.isNaN
, posso ficar por trás dessa lógica. Há também o método Underscore.js, que parece ainda mais confuso / blackbox, mas vale a pena notar de qualquer maneira, porque tira proveitoNaN !== NaN
.Object.prototype.toString.call(variable) === '[object Number]' && variable !== +variable
Na verdade, acho que você pode precisar usar,
if (value !== null || value !== undefined)
porque se vocêif (value)
também pode filtrar 0 ou valores falsos.Considere estas duas funções:
Na minha situação, eu só precisava para verificar se o valor for nulo e indefinido e eu não queria filtro
0
oufalse
ou''
valores. então usei o segundo teste, mas talvez seja necessário filtrá-los, o que pode fazer com que você use o primeiro teste.fonte
Eu encontrei uma outra maneira de testar se o valor é nulo:
null
atua comonumber
eobject
ao mesmo tempo. Comparandonull >= 0
ounull <= 0
resultando emtrue
. Compararnull === 0
ounull > 0
ounull < 0
resultará em falso. Mas comonull
também é um objeto, podemos detectá-lo como um nulo.Eu criei uma função mais complexa, a natureza de bruxa fará melhor do que typeof e pode ser dito quais tipos incluir ou manter agrupados
fonte
Eu fiz essa função muito simples que faz maravilhas:
A rota é qualquer cadeia de valores que possa explodir. Eu uso para jQuery / cheerio e objetos e tal.
Exemplos 1: um objeto simples como este
const testObj = {items: [{ val: 'haya' }, { val: null }, { val: 'hum!' }];};
.Mas poderia ser um objeto muito grande que nem sequer fizemos. Então eu passo por:
Claro que se você preferir, pode usar
null
ou'No value'
... Qualquer que seja a sua necessidade.Geralmente, uma consulta DOM ou um seletor de jQuery pode gerar um erro se não for encontrado. Mas usando algo como:
fonte
Você pode usar o módulo lodash para verificar se o valor é nulo ou indefinido
Link de referência: https://lodash.com/docs/#isNil
fonte
Isso não funcionará no caso de valores booleanos provenientes do DB para ex:
fonte
AFAIK em JAVASCRIPT quando uma variável é declarada, mas não possui valor atribuído, seu tipo é
undefined
. para que possamos verificar a variável, mesmo que isso ocorra emobject
alguma instância no lugar do valor .crie um método auxiliar para verificar a nulidade que retorna
true
e use-a na sua API.função auxiliar para verificar se a variável está vazia:
chamada excepcional à API do try-catch:
alguns casos de teste:
fonte
isEmpty
função se comporta exatamente como!
. Não há necessidade de inventar uma função. Apenas façaif (!pass || !cpass || !email ...)
. (O que já é mostrado na resposta aceita.) E pelo comentário do WebWanderer, a parte do meio desta postagem, "try-catch excepcional API call", não parece ser relevante para esta pergunta. Por favor, explique sua intenção - quando isso é útil? Como isso se relaciona com a pergunta?Verificando condições de erro:
fonte
Tente o seguinte:
fonte
if (variable === null)
? Também alguém já forneceu essa resposta no ano passado: stackoverflow.com/a/27550756/218196 .