【发布时间】:2013-02-19 06:27:33
【问题描述】:
我在 Underscore.js 的 _.each 实现中遇到了这行代码,我很好奇这里发生了什么。 obj前面的'+'是做什么用的?
if (obj.length === +obj.length) { ... }
【问题讨论】:
我在 Underscore.js 的 _.each 实现中遇到了这行代码,我很好奇这里发生了什么。 obj前面的'+'是做什么用的?
if (obj.length === +obj.length) { ... }
【问题讨论】:
if 测试 obj.length 是数字而不是 NaN。右侧始终是一个数字(如果 obj.length 不能解释为数字,则为 NaN)。如果obj.length 也是一个数字,它只会在左侧出现===。
请注意,如果obj.length 是一个看起来像数字的字符串,则使用isNaN 将不起作用;也就是说,isNan("3") 返回false。另请注意,NaN === NaN 是 false—NaN 绝不是 ===。
【讨论】:
obj.length 是一个数字,要么是一些昂贵的代码计算obj.length,如果它已经正确设置,则应该跳过它。