Avatar ·

表达式 (a == 1 && a == 2 && a == 3) 在 JavaScript 中能否为 true?

大家好!我最近刚开始学习 JavaScript,遇到了一个非常奇怪的问题。它检查条件 `(a == 1 && a == 2 && a == 3)` 是否可能为 true。乍一看这完全荒谬——同一个变量怎么可能同时等于三个不同的数字?如果我写普通代码: ```javascript let a = 1; console.log(a == 1 && a == 2 && a == 3); // false ``` 当然得到 false。但我听说 JavaScript 中有一些关于类型转换的技巧,可以让这样的表达式为 true。我知道 `==`(非严格相等)会进行类型转换,但我还是不明白这怎么可能。 请解释一下,能否让这个条件成立?如果可以,怎么做?最重要的是——为什么?这是某种魔法还是语言特性?希望能得到带有代码示例的详细解释。 <<>>

是的,这是可能的!工作原理如下

您说得对,乍一看这似乎不可能