什么是一元+在Javascript中使用?
我find了一些来自Underscore.js的代码
_.map = _.collect = function(obj, iterator, context) { var results = []; if (obj == null) return results; if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); each(obj, function(value, index, list) { results[results.length] = iterator.call(context, value, index, list); }); if (obj.length === +obj.length) results.length = obj.length; return results; };
我想知道if (obj.length === +obj.length)
是什么?
+length
是一种将任何东西转换成数字的方法。
如果是数字,则值不会更改,并且比较返回true。
如果不是数字,则断言是错误的。
这是一元+运算符。 这个网站有一个伟大的文章,它的使用与不同的数据types的JavaScript。
http://xkr.us/articles/javascript/unary-add/
我会偷的介绍,但它真的值得阅读,如果你在JavaScript。
在JavaScript中,可以在单个元素之前单独使用+运算符。 这表示一个math运算,并尝试将元素转换为数字。 如果转换失败,它将评估为NaN。 当需要快速将string转换为数字时,这是特别有用的,但也可以用于其他types的select集。
一元+运算符在string以外的types上使用时,会内部尝试调用valueOf()或toString()(按此顺序),然后尝试将结果转换为数字。 因此,一元+运算符可以成功转换许多本地JStypes,但有一定的限制:
这是testing,如果obj.length
是数字。
对string进行算术运算将其转换为整数(和+是一元操作..它不会做任何事情:-)),并且===操作符按types进行比较
a === b <=> (a == b) && (typeof a) == (typeof b)
我会build议你试试这个
console.log(typeof +“3”)=数字
console.log(typeof“3”)= string
这使一切都清楚。