javascript - 这里真的需要 JavaScript 身份比较吗?

标签 javascript

这是来自 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/

相关文章:

javascript - Vue 3 : Why dom ref value is undefined when ref in Vue 3 template

javascript - 如何 Jest 获取代码的未覆盖部分

javascript - 如何在 javascript 中创建 json 对象的哈希表?

javascript - 使用 ko.mapping.fromJS 保留原始值

javascript - 电脑猜数字 JavaScript

c# - 回发与 Javascript 客户端计算

javascript - 从文件中提取数据

javascript - PHP - 回显 HTML 的多个嵌套引号

javascript - 克隆一个 JQuery 不起作用的部分

javascript - 如果 AngularJS 中的 Api 服务状态 == 404,则记录消息