"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” é avaliado como verdadeiro em uma instrução if, mas como falso em uma comparação?

Por que “0” é avaliado como verdadeiro em uma instrução if, mas como falso em uma comparação?

Publicado em 2024-11-07
Navegar:946

Why Does

Compreendendo as peculiaridades do JavaScript: por que "0" é falso, mas não falso em instruções if

Em JavaScript, a avaliação de um valor em um contexto lógico - como em instruções if ou comparações booleanas — podem produzir resultados inesperados. Esse comportamento se deve ao mecanismo de coerção de tipo do JavaScript.

O JavaScript digita vagamente seus valores e, quando uma string ou valor numérico é usado em um contexto lógico, ele sofre coerção de tipo para convertê-lo em um valor booleano. Nesta conversão, strings não vazias e números diferentes de zero são avaliados como verdadeiros, enquanto strings vazias e números zero são avaliados como falsos.

Portanto, quando você compara "0" a falso usando == ou === , ele retorna verdadeiro porque a coerção de tipo converte "0" (uma string não vazia) e falso (um valor semelhante a zero) em verdadeiro.

No entanto, ao usar uma instrução if, "0" sozinho avalia para verdadeiro. Isso ocorre porque as instruções if usam internamente um valor booleano forçado, que retorna verdadeiro para strings não vazias.

Para evitar qualquer ambiguidade, é recomendado usar o operador de igualdade estrita === ao comparar valores primitivos, como ele realiza uma comparação sem coerção de tipo. Isso garante que "0" seja avaliado corretamente como falso quando necessário.

Consulte as tabelas anexadas para obter uma representação concisa do comportamento verdadeiro/falso do JavaScript para vários tipos de dados. Lembre-se, para comparações verdadeiras de igualdade, sempre opte por ===.

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