再說:在Javascript中轉換True-> 1和False-> 0?
true ? 1 : 0
沒有任何短絕招可以 「翻譯」 在Javascript True->1
和False->0
?
我已經搜查,但找不到任何替代
你說的「短絕招」的意思?
答案:同~~6.6
是Math.floor
再說:在Javascript中轉換True-> 1和False-> 0?
true ? 1 : 0
沒有任何短絕招可以 「翻譯」 在Javascript True->1
和False->0
?
我已經搜查,但找不到任何替代
你說的「短絕招」的意思?
答案:同~~6.6
是Math.floor
很多方法可以做到這一點
// implicit cast
+true; // 1
+false; // 0
// bit shift by zero
true >>> 0; // 1, right zerofill
false >>> 0; // 0
true << 0; // 1, left
false << 0; // 0
// double bitwise NOT
~~true; // 1
~~false; // 0
// bitwise OR ZERO
true | 0; // 1
false | 0; // 0
// bitwise AND ONE
true & 1; // 1
false & 1; // 0
// bitwise XOR ZERO, you can negate with XOR ONE
true^0; // 1
false^0; // 0
// even PLUS ZERO
true + 0; // 1
false + 0; // 0
// and MULTIPLICATION by ONE
true * 1; // 1
false * 1; // 0
您還可以通過1
,true/1; // 1
使用分裂,但我建議避免儘可能的部門。
此外,許多非一元運算符有一個assignment version,所以如果你有一個你想轉換的變量,你可以很快完成。
您可以看到this jsperf與不同方法的比較。
能否詳細說一下>>>? – 2013-02-09 12:04:57
'>>>'是[_Zero-fill right shift_](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators# >>> _%28Zero-fill_right_shift%29 )按位運算符。 'x >>> y'的意思是「用'y'將'x'中的每一位向右移動,用'0'填充現在空的列。選擇'y = 0'意味着你不會在任何地方移動這些位,但它仍然可以播放。 – 2013-02-09 12:08:06
wo ......看看jsperf。我剛剛測試過FF。看看差異。 – 2013-02-09 12:35:23
一招可以使用~~boolean
,其中boolean
是(顯然)一個布爾值。
~~true // 1
~~false // 0
+1我不敢相信我提供了相同的示例用法。 (並沒有想到它在這裏也可以接受) – 2013-02-09 11:48:23
...或者你可以使用+true
和+false
你可能不需要這樣做。任何算術運算都會轉換你的布爾值:例如'true + true + true == 3' – Eric 2013-02-09 11:56:52
任何將其操作數轉換爲數值的操作符都可以。所有運營商名單:http://es5.github.com/#x11-toc。 – 2013-02-09 12:27:37
@FelixKling你能修復這個鏈接嗎? – 2013-09-30 07:42:45