2

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

它输出真/假而不是 0/1 为什么会这样?

代码 -

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

5 回答 5

21

因为!运算符在完成其工作时将值强制为布尔值。

于 2012-08-03T13:38:20.000 回答
12

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

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

这里发生了什么事?%是模除法运算符。i % 2意思是“除以i2 并返回余数”。

i % 2始终为 1 或 0(除以 2 的余数始终为 0 或 1)。

于 2012-08-03T13:38:55.963 回答
4

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

于 2012-08-03T13:38:31.317 回答
4

因为否定运算符.

如果参数为真,它将返回假,反之亦然。

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

于 2012-08-03T13:39:15.587 回答
4

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

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

但是,@Miszy 对mod 2 运营商的回答更加优雅简洁。

于 2012-08-03T13:43:15.430 回答