在Python中的一个,也许在JavaScript中,布尔or
和and
运营商回归,而不是true
或false
一个操作数。布尔运算符返回其操作数
- 在Python,其中一个操作数返回:
'' || 'hello' == 'hello'
- 相比之下,在PHP:
'' || 'hello' == true
;
现在,
- 怎么叫布尔运算符的这种行为?
- 这是否也适用于JavaScript的所有浏览器?
在Python中的一个,也许在JavaScript中,布尔or
和and
运营商回归,而不是true
或false
一个操作数。布尔运算符返回其操作数
'' || 'hello' == 'hello'
'' || 'hello' == true
;现在,
由于Ignacio's answer指出,这些是合并运营商。 ||
是null coalescing operator,&&
是无效的合并运算符(
链接,如果我能找到一个
对不起,我找不到链接)。
它们应该在所有浏览器中都可用 - 它们都在ECMA-262第1,2,3和5版中定义,大多数当前的Javascript实现基于第3或第5版。从ECMA-262第3版:
生产LogicalANDExpression:LogicalANDExpression & & BitwiseORExpression被评价为 如下:
1.评估LogicalANDExpression。
2.调用GetValue(Result(1))。
3.调用ToBoolean(Result(2))。
4.如果Result(3)为false,则返回Result(2)。
5.评估BitwiseORExpression。
6.调用GetValue(Result(5))。
7.返回结果(6)。生产LogicalORExpression:LogicalORExpression ||逻辑和表达式评估为 如下:
1.评估LogicalORExpression。
2.调用GetValue(Result(1))。
3.调用ToBoolean(Result(2))。
4.如果Result(3)为true,则返回Result(2)。
5.评估逻辑和表达。
6.调用GetValue(Result(5))。
7.返回结果(6)。
它被称为“合并”。它应该在任何声称合规的浏览器中表现相同。