Confusão sobre a veracidade e igualdade de matrizes vazias com o falso
Em JavaScript, matrizes vazias são consideradas verdadeiras. Porém, quando comparados ao valor primitivo falso, eles também são avaliados como falsos. Esse comportamento desconcertante pode ser atribuído às conversões implícitas de tipo realizadas por operadores de igualdade.
Vamos dar uma olhada mais de perto no código de exemplo fornecido:
var arr = []; console.log('Array:', arr); if (arr) console.log("It's true!"); if (arr == false) console.log("It's false!"); if (arr && arr == false) console.log("...what??");
A primeira instrução if verifica se arr está presente (pois é um objeto). Como arr é um objeto Array, ele está presente e a condição é avaliada como verdadeira.
No entanto, a segunda instrução if compara o valor de arr (depois de chamar toString()) com o valor primitivo false. Em JavaScript, [] é convertido em uma string vazia ("") quando chamado com toString(), que é considerado um valor falso (junto com nulo, indefinido, 0, etc.). Portanto, a condição também é avaliada como falsa.
A terceira instrução if combina as duas condições anteriores usando o operador AND (&&). Como arr (agora uma string vazia) e arr == false (true & false) são avaliados como falsos, toda a condição é avaliada como falsa.
Em conclusão, matrizes vazias são verdadeiras no sentido de que são consideradas apresentar e avaliar como verdadeiro quando usado em contextos de objeto ou condicionais. No entanto, quando comparados ao valor primitivo false, eles são avaliados como false devido a conversões de tipo implícitas realizadas por operações de igualdade.
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