"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Puede (a == 1 && a == 2 && a == 3) ser cierto en JavaScript?

¿Puede (a == 1 && a == 2 && a == 3) ser cierto en JavaScript?

Publicado el 2024-11-08
Navegar:170

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

¿Puede (a== 1 && a ==2 && a==3) ser verdad en JavaScript?

Esta entrevista desconcertante La pregunta desafía la comprensión del operador de igualdad de JavaScript (==). La pregunta es si es posible hacer que la expresión (a== 1 && a ==2 && a==3) se evalúe como verdadera.

A primera vista, parece imposible, ya que a no puede ser igual a tres valores distintos simultáneamente. Sin embargo, un truco inteligente explota la naturaleza maleable del operador == de JavaScript.

En JavaScript, == realiza coerción de tipos, lo que permite comparaciones de valores inesperadas. Al definir un objeto con una función personalizada toString() o valueOf(), se puede manipular el valor devuelto al comparar el objeto con un número.

Por ejemplo, considere el siguiente código:

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

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

Aquí, el objeto a tiene una propiedad i inicializada en 1. Su función toString() está definida para incrementar i y devolver su valor, cambiando efectivamente la representación del objeto con cada comparación.

Cuando a se compara por primera vez con 1, i se incrementa a 2. En la segunda comparación, i se incrementa nuevamente a 3, satisfaciendo la condición de igualdad. Finalmente, en la tercera comparación, i se incrementa a 4, pero la coerción de tipos lo convierte nuevamente a 3, lo que resulta en una coincidencia.

Por lo tanto, al aprovechar el operador de igualdad flexible de JavaScript y definir un objeto personalizado, De hecho, es posible satisfacer la expresión (a== 1 && a ==2 && a==3), haciendo que se evalúe como verdadera.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3