"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que “0” atua como falso em comparações, mas verdadeiro em declarações “if” em JavaScript?

Por que “0” atua como falso em comparações, mas verdadeiro em declarações “if” em JavaScript?

Publicado em 2024-11-07
Navegar:871

Why Does

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):

ValorComparaçãoInstrução If
Verdadeiro/Verdadeiroverdadeiroverdadeiro
Falso/Falsofalsofalso
"0" (Falso)falsotrue

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.

Tutorial mais recente Mais>

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