"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 > Pode (a == 1 && a == 2 && a == 3) ser verdadeiro em JavaScript?

Pode (a == 1 && a == 2 && a == 3) ser verdadeiro em JavaScript?

Publicado em 2024-11-08
Navegar:586

Can (a == 1 && a == 2 && a == 3) Ever Be True in JavaScript?

Pode (a== 1 && a ==2 && a==3) ser verdadeiro em JavaScript?

Esta entrevista desconcertante questão desafia a compreensão do operador de igualdade do JavaScript (==). A questão pergunta se é possível fazer com que a expressão (a== 1 && a ==2 && a==3) seja avaliada como verdadeira.

À primeira vista, parece impossível, pois a não pode ser igual a três valores distintos simultaneamente. No entanto, um truque inteligente explora a natureza maleável do operador == do JavaScript.

Em JavaScript, == executa coerção de tipo, o que permite comparações de valores inesperadas. Ao definir um objeto com uma função toString() ou valueOf() personalizada, pode-se manipular o valor retornado ao comparar o objeto a um número.

Por exemplo, considere o seguinte código:

const a = {
  i: 1,
  toString: function () {
    return a.i  ;
  }
};

if(a == 1 && a == 2 && a == 3) {
  console.log('Hello World!');
}

Aqui, o objeto a possui uma propriedade i inicializada com 1. Sua função toString() é definida para incrementar i e retornar seu valor, alterando efetivamente a representação do objeto a cada comparação.

Quando a é comparado pela primeira vez com 1, i é incrementado para 2. Na segunda comparação, i é novamente incrementado para 3, satisfazendo a condição de igualdade. Finalmente, na terceira comparação, i é incrementado para 4, mas o tipo coercion o converte de volta para 3, resultando em uma correspondência.

Assim, aproveitando o operador de igualdade flexível do JavaScript e definindo um objeto personalizado, ele é de fato possível satisfazer a expressão (a== 1 && a ==2 && a==3), fazendo com que ela seja avaliada como verdadeira.

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