如何理解“if ( obj.length === +obj.length )” Javascript 条件语句
How to understand "if ( obj.length === +obj.length )" Javascript condition statement?
我遇到了一个条件语句,我有一些难以理解。它看起来像(请注意右侧的+
符号)这个:
obj.length === +obj.length
.
可以解释这个条件及其目的/语法吗?
查看该声明(不知道)会给人的印象是它是某种肮脏的黑客,但我几乎可以肯定,下划线.js是一个设计良好的库,因此必须有更好的解释。
背景
- 我发现这个语句用于下划线.js库(下划线.js注释源)的某些函数中。
- 我的猜测是,这个条件语句在某种程度上与测试数组类型的变量
obj
有关?(但我完全不确定)。我试图使用此代码对此进行测试。
var myArray = [1,2,3];testResult1 = myArray.length === +myArray.length;console.log( testResult1 );打印真实var myObject = { foo : "somestring", bar : 123 };testResult2 = myObject.length === +myObject.length;console.log( testResult2 );打印错误
它同时执行两个测试:
- 确保 obj.length 是一个数字
- 确保 obj.length 不是 NaN(不是数字)
也可以写成:
(typeof obj.length === 'number') && !isNaN(obj.length)
更新的答案:我首先说它等同于typeof obj.length === 'number') && isFinite(obj.length)
但事实并非如此,因为它对+Infinity
和-Infinity
返回 true。感谢RobG指出这一点
一元加运算符 (+
) 将 RHS 转换为数字。
这是一个测试,首先查看该值是否为数字。
相关文章:
- javascript testing .length and .length > 0
- Javascript document.images.length returning 0
- 在JavaScript中,是否使用数组's的length属性生成整数数学
- 在我执行alert()之前,Javascript array.length为0
- Javascript.创建类似数组的对象.是否可以使 .length 自动增量
- Javascript array.length 为 0,但数组填充了 40 个项目
- 如何理解“if ( obj.length === +obj.length )” Javascript 条件语句
- JavaScript array.length 在元素被推入后保持 0
- 在javascript中调用array.length的效率
- Javascript string.length and string.lastIndexOf diff values
- JavaScript document.anchors.length 在 Firefox 中返回 1
- String.length 在 JavaScript 中是如何工作的
- JavaScript new Date().toLocaleString() length
- JavaScript innerHTML.length alternative
- javascript array.length 函数的奇怪结果
- “array.length -1”在JavaScript中是什么意思
- 无法读取 javascript for loop 中 null 的属性“length”
- JavaScript files.length 在 ie9 中不起作用需要替代方法
- 在JavaScript中,什么's myArray.length=0与myArray=new Array()之间
- 代码是什么?长度== + Length "JavaScript中的mean