发布于 2026-01-06 3 阅读
0

条件 (aᅠ == 1 && a == 2 && ᅠa == 3) 是否为真?

条件 (aᅠ == 1 && a == 2 && ᅠa == 3) 是否为真?

这里有一个关于 JavaScript 的小知识:表达式 `is` 的(aᅠ == 1 && a == 2 && ᅠa == 3)值有可能为 `false`true吗?今天我发现答案是肯定的。运行下面的代码,自己验证一下吧。

现在我们来看下面这段看似相同的代码。试着运行一下。这次表达式的计算结果不是true。那么,究竟发生了什么变化呢?

一旦你弄明白是怎么回事,区别其实很简单,也远没有那么神秘。原来,Unicode 中有一个名为“半角韩文填充符”(Halfwidth Hangul Filler)的字符,它是一个韩文符号,实际上几乎是不可见的。所以,第一个代码片段之所以会执行,true是因为这三个变量a实际上是三个不同的变量。其中一个变量前面加上了“半角韩文填充符”,另一个变量保持不变,而第三个变量后面则加上了这个隐藏字符。

下次如果有人问你 是否(aᅠ == 1 && a == 2 && ᅠa == 3)可能等于true,你可以回答说,是的,确实可以(但有一个小小的例外情况)😀

文章来源:https://dev.to/superkarolis/can-a--1--a--2--a--3-equal-true-3bo2