JavaScript 中布尔值的求幂运算符?
Exponentiation operator for Boolean in JavaScript?
参考this,exponentiation operator
returns第一个操作数乘第二个操作数的结果,如Python中的幂运算符,是一部分ECMAScript 2016 (ES7) 提案。
我们知道 Boolean
和 Python 中的 exponentiation operator
的结果如下:
>>> False ** False == True
True
>>> False ** True == False
True
>>> True ** False == True
True
>>> True ** True == True
True
我想知道 Boolean
是否可以用在 exponentiation operator
中?如果是这样,在 Python?
中是否会出现与上面相同的行为?
我不确定您期望什么样的答案。如果您查看 proposal,您会注意到两个操作数都首先转换为数字。这意味着 false ** false
等同于 0 ** 0
.
是的,您可以将运算符应用于布尔值。就像所有其他运算符一样,值会转换为运算符期望的类型。
结果总是一个数字。
但是,当然如果你使用松散比较,那么如果取幂的结果是1
,它会松散等于true
,如果它是 0
,它将 松散地 等于 false
.
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
与 false
不同,1
也不相同作为 true
.
参考this,exponentiation operator
returns第一个操作数乘第二个操作数的结果,如Python中的幂运算符,是一部分ECMAScript 2016 (ES7) 提案。
我们知道 Boolean
和 Python 中的 exponentiation operator
的结果如下:
>>> False ** False == True
True
>>> False ** True == False
True
>>> True ** False == True
True
>>> True ** True == True
True
我想知道 Boolean
是否可以用在 exponentiation operator
中?如果是这样,在 Python?
我不确定您期望什么样的答案。如果您查看 proposal,您会注意到两个操作数都首先转换为数字。这意味着 false ** false
等同于 0 ** 0
.
是的,您可以将运算符应用于布尔值。就像所有其他运算符一样,值会转换为运算符期望的类型。
结果总是一个数字。
但是,当然如果你使用松散比较,那么如果取幂的结果是1
,它会松散等于true
,如果它是 0
,它将 松散地 等于 false
.
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
与 false
不同,1
也不相同作为 true
.