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

Javascript 为什么呢!x将1和0更改为真/假,javascript,jquery,Javascript,Jquery,下面是我的示例代码- 它输出真/假而不是0/1为什么 代码- x = 1; for(i = 0; i < 20; i++) { x = !x; $("body").append(x+"<br />"); }​ x=1; 对于(i=0;i

下面是我的示例代码-

它输出真/假而不是0/1为什么

代码-

x = 1;
for(i = 0; i < 20; i++) {
    x = !x;    
    $("body").append(x+"<br />");
}​
x=1;
对于(i=0;i<20;i++){
x=!x;
$(“正文”)。附加(x+”
); }​
因为!运算符在执行其任务时将值强制为bool。

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

因为“!”运算符将变量的类型转换为布尔值。您可能想做:

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

for(设i=1;i,因为求反运算符

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

在这种情况下,先将0转换为false,将1转换为true。然后这些值将被求反。

是一个值,并将返回一个布尔值。要将
true
/
false
转换回
1
/
0
,可以使用:

x=1;
对于(i=0;i<20;i++){
x=+!x;
$(“正文”)。附加(x+”
); }​

然而,@Miszy用
mod 2
的回答更加优雅和简洁。

该死,太慢了…+1不能成为第一个。这是一个布尔运算符,你期待什么?好吧,我不知道;)!向上投票所有答案,谢谢。如果您对某个数字感兴趣,可以强制将其显示为0/1<代码>x=编号(!x)嗯,我不需要解决这个问题,只是好奇为什么会这样,当它显示真/假而不是1/0:)看这里,第二步:你也可以使用
x=+!x
获取一个数值。同意,这将产生相同的结果。然而,在我看来,这个解决方案更神秘。新手很难理解
+背后的意图!因此,我建议使用更明确的版本。
x = 1;
for(i = 0; i < 20; i++) {
    x = +!x;    
    $("body").append(x+"<br />");
}​