80

除了 :

true ? 1 : 0

是否有任何可以“翻译”True->1False->0在 Javascript 中的小技巧?

我已经搜索但找不到任何替代方案

“短把戏”是什么意思?

答案:same as~~6.6是一个技巧Math.floor

4

4 回答 4

212

很多方法可以做到这一点

// 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

您也可以使用除法1true / 1; // 1但我建议尽可能避免除法。

此外,许多非一元运算符都有赋值版本,因此如果您有要转换的变量,您可以非常快速地完成。

您可以使用此 jsperf查看不同方法的比较。

于 2013-02-09T11:49:54.163 回答
26

另一种方法可能是使用Number()

Number(true) // = 1
Number(false) // = 0
于 2018-10-30T04:31:53.417 回答
13

...或者你可以使用+true+false

于 2013-02-09T11:49:23.420 回答
12

您可以使用~~boolean, where boolean(显然)是一个布尔值。

~~true  // 1
~~false // 0
于 2013-02-09T11:46:43.863 回答