Desvendando o paradoxo do JavaScript: por que "0" é falso na comparação, mas falso em declarações if
Em JavaScript, o comportamento do primitivo " 0" representa um quebra-cabeça para os desenvolvedores. Embora operadores lógicos como "==" igualem "0" a falso, "0" se comporta como verdadeiro em condições "se".
Paradoxo de comparação
O código abaixo demonstra o paradoxo da comparação:
"0" == false // true
false == "0" // true
Neste cenário, o JavaScript força "0" a false com base em seus valores "verdadeiro" e "falso". Valores como "0", "NaN", "null" e indefinido são considerados falsos, enquanto outros são verdadeiros.
If Statement Anomaly
No entanto, a situação torna-se intrigante quando "0" é usado em uma instrução "if":
if ("0") console.log("ha") // ha
Apesar de ser coagido para falso em comparações, "0" é avaliado como verdadeiro em condições "se". Isso ocorre porque as instruções "if" em JavaScript tratam todas as strings não vazias, incluindo "0", como verdadeiras.
Tabelas de veracidade
Para entender esse comportamento, nós pode consultar tabelas de veracidade do JavaScript. Eles categorizam valores com base em seu status verdadeiro/falso em condições de comparação (==) e de declaração "se" (verdadeiras):
Valor | Comparação | Instrução If |
---|---|---|
Verdadeiro/Verdadeiro | verdadeiro | verdadeiro |
Falso/Falso | falso | falso |
"0" (Falso) | falso | true |
Conclusão
O paradoxo de "0" em JavaScript surge das diferentes interpretações de veracidade em comparação (= =) e declarações "se" (verdadeiras). Esta é uma distinção sutil, mas crucial, da qual os desenvolvedores devem estar cientes para evitar resultados inesperados. Como prática recomendada, é aconselhável usar igualdade estrita (===) durante as comparações para garantir avaliações precisas.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3