此外:第一个月有什么小窍门可以在Javascript中“转换”True->1和False->0吗?我已经找过了,但没有找到任何替代品你说的“小把戏”是什么意思答案:与~~6.6相同是Math.floor的一个技巧
True->1
False->0
~~6.6
Math.floor
yvgpqqbh1#
有很多方法可以做到这一点
// 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的不同方法的比较。
1
true / 1; // 1
yc0p9oo02#
下面是一个更符合逻辑的方法Number()
Number()
Number(true) // = 1 Number(false) // = 0
qeeaahzv3#
...也可以使用+true和+false
+true
+false
6g8kf2rb4#
可以使用~~boolean,其中boolean(显然)是一个布尔值。
~~boolean
boolean
~~true // 1 ~~false // 0
vohkndzv5#
将默认开关值从布尔值转换为数字0或1以匹配后端值。
0应转换为“假”1应转换为“真”
这可以通过以下逻辑实现:
!!0 => false !!1 => true
5条答案
按热度按时间yvgpqqbh1#
有很多方法可以做到这一点
您也可以使用除以
1
、true / 1; // 1
,但我建议尽可能避免除法。此外,许多非一元运算符都有一个assignment version,所以如果你有一个你想要转换的变量,你可以很快地完成它。
您可以看到this jsperf的不同方法的比较。
yc0p9oo02#
下面是一个更符合逻辑的方法
Number()
qeeaahzv3#
...也可以使用
+true
和+false
6g8kf2rb4#
可以使用
~~boolean
,其中boolean
(显然)是一个布尔值。vohkndzv5#
将默认开关值从布尔值转换为数字0或1以匹配后端值。
0应转换为“假”
1应转换为“真”
这可以通过以下逻辑实现: