什么是+&引用;你喜欢JavaScript吗?
考虑以下代码什么是+&引用;你喜欢JavaScript吗?,javascript,Javascript,考虑以下代码 var value = 0; for (var i=0; i < arguments.length; i++) { value += +!!arguments[i]; } var值=0; for(var i=0;i1,false=>0) falsy值是强制为false的任何值。falsy值是0,“,NaN,null,未定义,当然还有false。真实的价值是任何其他价值 因此,最终结果是将参数中的truthy值的计数添加到值 这是JavaScript中一种很好的编程风
var value = 0;
for (var i=0; i < arguments.length; i++) {
value += +!!arguments[i];
}
var值=0;
for(var i=0;i
什么是
+你真的在这里吗?这是JavaScript中的一种好编程风格吗?!!arguments[i]
是一种常见的习惯用法,它应用两次逻辑求反,将表达式arguments[i]
转换为实际的布尔值
比如说,
console.log(!!{});
// true
为什么我们需要两个逻辑否定?因为,它不会改变数据的奇偶性。比如说,
console.log(!!{});
// true
如果数据是原始数据,则!Truthy
将变为false
,然后再次反转!false
,您将得到true
如果数据是原始数据,则!Falsy
将变为真
,然后再次反转!如果为true
,您将得到false
console.log(+true);
// 1
console.log(+false);
// 0
+
运算符位于+!!参数[i]
用于确保从布尔值中获取一个数值(正如!!参数[i]
保证提供一个布尔值)
在JavaScript中,当true
转换为数字时,您将得到1
,对于false
,将得到0
console.log(+true);
// 1
console.log(+false);
// 0
它不是一个运算符,而是三个:+
然后是代码>两次
它的作用是应用
到参数[i]
,将truthy值false
或falsy值转换为true
,然后应用
使为false
=>为true
,反之亦然,然后应用一元数+
将结果转换为数字(true
=>1
,false
=>0
)
falsy值是强制为false
的任何值。falsy值是0
,“
,NaN
,null
,未定义
,当然还有false
。真实的价值是任何其他价值
因此,最终结果是将参数中的truthy值的计数
添加到值
这是JavaScript中一种很好的编程风格吗
使用代码>把真实的东西变成真实的,把虚假的东西变成虚假的,这是完全正常的做法。使用一元数+
将某物转换为数字也是完全正常的做法。通常
用于将变量转换为布尔类型,+
转换为数字。
在本例中,首先将其转换为布尔值,然后再转换为数字(在本例中为1或0)。
变量value
包含传递给函数的参数数。是的,我应该参考代码>作为一个惯用单元,说得好。也许你可以对第二个问题发表意见,即“这是JavaScript中一种好的编程风格吗?”。对于未经培训的人来说,不是很容易理解。可以很容易地做得更好,比如使用三元运算符related:。实际上,这里不需要+
,因为加法会强制布尔值为一个数字。好吧,为了一致性,我建议您开始使用“truey”。@torazaburo:“truthy”和“falsy”与“truthy”和“falsy”并不相似。它必须是“真实”和“虚假”或“真实”和“虚假”或“真实”和“虚假”。英语是无政府主义的。