为什么!x将1和0更改为真/假

Why does !x change 1 and 0 to true / false

本文关键字:为什么      更新时间:2023-09-26

所以这里是我的示例代码-http://jsfiddle.net/JRqq3/。

它输出true/false而不是0/1,为什么这样?

代码-

x = 1;
for(i = 0; i < 20; i++) {
    x = !x;    
    $("body").append(x+"<br />");
}​

因为!运算符在执行其工作时将该值强制为布尔值。

因为"!"运算符将变量的类型强制转换为bool。你可能想做:

for (let i = 1; i <= 20; ++i) {
    $("body").append( String(i % 2) + '<br />');
}​

这里发生了什么?CCD_ 1是一个模除法算子。i % 2表示"将i除以2并返回余数"。

i % 2总是1或0(除以2的余数总是0或1)。

因为通过计算x = !x;,您将类型更改为布尔值,而不是整数。

因为否定运算符

如果参数为true,则返回false,反之亦然。

在这种情况下,首先将0强制转换为false,然后将1强制转换为true。然后这些值将被否定。

!是一个布尔逻辑运算符,将返回一个布尔值。要将true/false转换回1/%0,可以使用一元+运算符:

x = 1;
for(i = 0; i < 20; i++) {
    x = +!x;    
    $("body").append(x+"<br />");
}​

然而,@Miszy用mod 2运算符给出的答案更加优雅简洁。