所以這裏是我的示例代碼 - 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