这里真的需要JavaScript标识比较吗?
Is JavaScript identity compare really needed here?
这是来自Crockford的JavaScript: The Good Parts
var is_array = function (value) {
return Object.prototype.toString.apply(value) === '[object Array]';
};
如果他使用一个简单的相等比较==
,而不是恒等比较===
,这段代码会不会同样有效?
我对恒等式的理解是,它允许你检查一个值是否真的被设置为特定的东西,而不仅仅是等价的东西。例如:
x == true
将求值为真,或者为真,但是
x === true
只有在x为真时才为真。
上面的is_array函数是否有可能与==
或===
一起工作,而不是其他?
在本例中,==
和===
的工作原理相同。
在这种情况下没有真正的区别,因为质量测试的两边都已经是字符串,所以==
可以做的额外类型转换在这里不会起作用。由于这里没有任何类型转换,因此==
和===
将生成相同的结果。
在我个人看来,我倾向于使用===
,除非我明确希望允许类型转换,因为我认为对某些结果感到惊讶的可能性较小。
你是正确的。使用==
而不是===
,应该可以正常工作。
===
是严格匹配,对于' false '或' true '值不会返回true(更多详细信息请参见此)。这在这种情况下是不适用的。
相关文章:
- 比较从函数和生成的日期对象
- 如何使用 node.js 比较两个 json 数组
- jQuery自定义验证比较多个输入的序列
- 反向字符串比较
- 通过JSON&比较时间
- 将DOM节点值与字符串Javascript进行比较
- 从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较
- 递归深度比较
- 可以't在JavaScript中比较两个字符串
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 如何在moment.js中只比较日期
- 无法比较javascript变量
- 比较javascript中的浮动并更改最高浮动的颜色
- 使用javascript比较对象中的对象值和数组长度
- 如何将smarty变量与javascript变量进行比较
- 比较两个数组中的元素
- MongoDB-通过比较集合和对象的数组来返回现有字段的数组
- 使用Facebook登录,但仍然可以获得:“;此标识池不支持未经身份验证的访问“;
- 比较和转换多个数组
- 这里真的需要JavaScript标识比较吗?