这是来自 Crockford 的 JavaScript: The Good Parts
var is_array = function (value) {
return Object.prototype.toString.apply(value) === '[object Array]';
};
如果他使用简单的相等比较 ==
而不是恒等比较 ===
,这段代码会不会同样有效?
我对身份的理解是,它允许您检查一个值是否真的设置为特定的东西,而不仅仅是等价的东西。例如:
x == true
如果 x 为 1 或 true,则计算结果为 true,但是
x === true
仅当 x 为真时才为真。
上面的 is_array 函数是否可以与 ==
或 ===
一起使用,但不能与另一个一起使用?
最佳答案
在这种特殊情况下,==
和 ===
的工作方式相同。
在这种情况下没有真正的区别,因为质量测试的两边都已经是字符串,所以 ==
可以做的额外类型转换不会在这里发挥作用。由于这里从来没有任何类型转换,因此 ==
和 ===
将生成相同的结果。
在我个人看来,我倾向于使用 ===
除非我明确希望允许类型转换,因为我认为对某些结果感到惊讶的可能性较小。
关于javascript - 这里真的需要 JavaScript 身份比较吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7532384/