运行此代码会产生如注释中所示的结果,但为什么会发生这种情况?
let a = [1,2,3];
let b = [1,2,3];
let c = '1,2,3';
a == c; // true
b == c; // true
a == b; // false
我注意到,如果您更改之前的代码,最终结果会发生以下变化:
let a = [1, 2, 3];
let b = [1, 2, 3];
let c = '1, 2, 3';
a == c; // false
b == c; // false
a == b; // false
谢谢!
最佳答案
请参阅this article它描述了 JavaScript 中不同类型的相等检查。
a == c; // true
b == c; // true
以上两者都返回 true,因为 ==
导致数组使用其 toString
转换为其等效的字符串方法(因为使用 ==
运算符将其与字符串进行比较),该方法返回 "1,2,3"
。显然"1,2,3"
等于"1,2,3"
.
a == b; // false
上面返回 false,因为 a
和b
是两个不同的数组,JavaScript 通过引用来比较它们,而不是遍历每个元素并单独比较它们或将它们转换为等效字符串。
关于javascript - 为什么会出现这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50178437/