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 ===.
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