【问题标题】:Javascript Comparison value === +value [duplicate]Javascript比较值=== +值[重复]
【发布时间】:2013-01-01 05:20:31
【问题描述】:

可能重复:
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 中多次进行相同类型的比较,所以 我很确定这不是错字。

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

【问题讨论】:

标签: javascript underscore.js


【解决方案1】:

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

【讨论】:

  • 这个答案实际上是错误的(或者它可能只在过去是正确的?)。一元运算符不使用对象的.length 属性。相反,它使用对象的valueOfkey 尝试将其转换为数字。它的工作原理与Number() 构造函数相同。如果你想 e ,你可以使用一元运算符。 G。将"3"的字符串转换为数字类型。
  • @Xen_mar 我的意思是表达式obj.length == +obj.length 正在检查length 属性是否为数字。我并不是说一元加号正在检查length。抱歉,如果不清楚。
猜你喜欢
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
  • 2016-04-24
  • 2017-12-29
  • 2021-03-01
  • 2023-01-10
  • 1970-01-01
  • 2019-12-30
相关资源
最近更新 更多