考虑以下代码
var value = 0;
for (var i=0; i < arguments.length; i++) {
value += +!!arguments[i];
}
什么是+!!
真的吗?这是JavaScript的一种良好编程风格吗?
它不是一个运算符,而是三个:+
然后是!
两次。
该操作适用!
于arguments[i]
将真值false
或伪值转换为true
,然后应用于!
make false
=> true
,反之亦然,然后应用一进制+
将结果转换为数字(true
=> 1
,false
=> 0
)。
一个falsy值是任意值,它可以强制到false
。该falsy值0
,""
,NaN
,null
,undefined
,当然,false
。甲truthy值是任何其它值。
因此,最终结果是将真实值的计数添加arguments
到中value
。
这是JavaScript的一种良好编程风格吗?
使用!!
把东西truthy成true
和东西falsy成false
是完全正常的做法。使用一元+
将某物转换为数字也是完全正常的做法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句