Javascript 比较值 === +值

标签 javascript underscore.js

Possible Duplicate:
javascript: plus symbol before variable
obj.length === +obj.length in javascript

在查看source of underscore.js时我遇到了这条线(#79)

//some stuff
} else if (obj.length === +obj.length) {
//do stuff

我不是 100% 确定这里发生了什么,谁能解释一下 obj.length 值之前的“+”的目的?可以比较一下 如果只是这样,则相同:

} else if (obj.length === obj.length) {

相同类型的比较在underscore.js中进行了多次,所以 我相当确定这不是一个拼写错误。

如果有人能给我指出一篇文章,或者向我提供一些正确的术语,我将不胜感激:)。谢谢!

最佳答案

它正在检查 length 属性是否为数字。当应用一元 + 时,它将返回对象的数字表示或 NaN,这将是比较通过或失败的基础。对于第一种情况,如果 obj 没有 length 属性,它将是 +undefined ,它将返回 NaN >。如果 obj.length 是数字,则条件将通过。

关于Javascript 比较值 === +值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14108008/

相关文章:

JavaScript,创建带有链接的 div,然后通过单击所述 div 删除

javascript - meteor 说 Iron Router 无法与 Intellij 解决

javascript - replace() 方法不替换任何东西

json - 使用 SerializeJSON 返回一个结构数组而不是带有 COLUMNS 和 DATA 节点的 JSON 对象?

javascript - 给定一个日期和一个 cron 表达式,您可以验证该日期是否是 cron 表达式的一部分

javascript - 如何理解 "if ( obj.length === +obj.length )"Javascript条件语句?

javascript - Backbone .groupBy 还是过滤器?

javascript - 使用下划线_.delay,如何停止 future 的执行并提供用户状态

javascript - ES6/7等同于underscore的range函数

javascript - 如何控制 Android Web 浏览器中 html 输入控件周围的橙色突出显示?