JavaScript中布尔运算的指数运算符?

时间:2015-11-22 04:13:07

标签: javascript exponentiation ecmascript-7

参考thisexponentiation operator将第一个操作数的上升结果返回到第二个操作数,就像Python中的指数运算符一样,它是ECMAScript 2016(ES7)提案的一部分。< / p>

我们知道Python中Booleanexponentiation operator的结果如下:

>>> False ** False == True
True
>>> False ** True == False
True
>>> True ** False == True
True
>>> True ** True == True
True

我想知道Boolean中是否可以使用exponentiation operator?如果是这样,可能与Python上面的行为相同吗?

2 个答案:

答案 0 :(得分:2)

我不确定你期望得到什么样的答案。如果查看proposal,您会注意到两个操作数首先转换为数字。这意味着false ** false相当于0 ** 0

所以是的,您可以将运算符应用于布尔运算符。就像所有其他运算符一样,这​​些值将转换为运算符所期望的类型。

结果将始终是一个数字。

但是,当然如果你使用松散比较,那么如果取幂的结果是1,它将松散地等于true,如果它是{{1}它将松散地等于0

答案 1 :(得分:1)

Yes

console.log(false ** false == true);  // true
console.log(false ** true == false);  // true
console.log(true ** false == true);  // true
console.log(true ** true == true);  // true

如果您使用===,则所有false都会0,因为false1不同,true与{{1}}不同{1}}。