我遇到了一个我很难理解的条件语句。它看起来像(请注意+
右侧的 -符号):
obj.length === +obj.length
.
可以解释这种情况及其目的/语法吗?
看这个声明(不知道它)会让人觉得它是某种肮脏的 hack,但我几乎可以肯定underscore.js是一个设计良好的库,所以必须有更好的解释。
背景
- 我发现在underscore.js库的一些函数中使用了这个语句( underscore.js 带注释的源代码)。
- 我的猜测是这个条件语句在某种程度上与测试一个变量
obj
是否为数组类型有关?(但我完全不确定)。我尝试使用此代码对此进行测试。
var myArray = [1,2,3]; testResult1 = myArray.length === +myArray.length; 控制台.log(testResult1); //打印为真 var myObject = { foo : "somestring", bar : 123 }; testResult2 = myObject.length === +myObject.length; 控制台.log(testResult2); //打印错误