所以这里是我的示例代码 - http://jsfiddle.net/JRqq3/。为什么!x将1和0更改为true/false
它输出true/false而不是0/1为什么这样呢?
码 -
x = 1;
for(i = 0; i < 20; i++) {
x = !x;
$("body").append(x+"<br />");
}
所以这里是我的示例代码 - http://jsfiddle.net/JRqq3/。为什么!x将1和0更改为true/false
它输出true/false而不是0/1为什么这样呢?
码 -
x = 1;
for(i = 0; i < 20; i++) {
x = !x;
$("body").append(x+"<br />");
}
因为通过评估x = !x;
您正在将类型更改为布尔值而不是整数。
因为“!”运算符将该变量的类型转换为布尔值。你可能想要做的:
for(i = 1; i <= 20; i++) {
$("body").append(i%2+"<br />");
}
还是有点更快的解决方案:
var x = 1;
for(i = 0; i < 20; i++) {
x = 1-x;
$("body").append(x+"<br />");
}
也可以用'x = +!x;'来得到一个数值。 – Michael 2012-08-03 13:40:26
@Michael双重铸造对我来说没有意义:) – 2012-08-03 13:48:36
http://jsperf.com/double-cast-vs-modulo – 2012-08-03 13:50:41
因为否定运算的!。
如果参数为true,则返回false,反之亦然。
在这种情况下,0先被转换为假,1被转换为真。然后这些值将被否定。
!
是一个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更优雅简洁。
这是一个布尔运算符,你期望什么? – Bergi 2012-08-03 13:39:48
好吧,不知道;)!谢谢所有答案。 – y2ok 2012-08-03 13:41:18
如果您有兴趣转换为数字,您可以强制它显示为0/1。 'x = Number(!x);' – 2012-08-03 13:42:40