所以这是我的示例代码 - http://jsfiddle.net/JRqq3/。
为什么会这样输出真/假而不是0/1?
代码 -
x = 1;
for(i = 0; i < 20; i++) {
x = !x;
$("body").append(x+"<br />");
}
答案 0 :(得分:21)
因为!操作员在执行工作时强制将值赋予bool。
答案 1 :(得分:12)
因为&#34;!&#34; operator将变量的类型转换为bool。你可能想这样做:
for (let i = 1; i <= 20; ++i) {
$("body").append( String(i % 2) + '<br />');
}
这里发生了什么? %
是模除法运算符。 i % 2
表示&#34;将i
除以2并返回余数&#34;。
i % 2
始终为1或0(除以2的余数始终为0或1)。
答案 2 :(得分:4)
因为通过评估x = !x;
,您将类型更改为布尔值而不是整数。
答案 3 :(得分:4)
由于否定运算符!。
如果参数为真,则返回false,反之亦然。
在这种情况下,0首先被强制转换为false,1被强制转换为true。那么这些价值就会被否定。
答案 4 :(得分:4)
!
是boolean logic operator并返回一个布尔值。要将true
/ false
转换回1
/ 0
,您可以使用unary +
operator:
x = 1;
for(i = 0; i < 20; i++) {
x = +!x;
$("body").append(x+"<br />");
}
但是,@ Miszy对mod 2
operator的回答更加优雅和简洁。