2010-07-12 60 views
2

在Python中的一个,也许在JavaScript中,布尔orand运营商回归,而不是truefalse一个操作数。布尔运算符返回其操作数

  • 在Python,其中一个操作数返回:'' || 'hello' == 'hello'
  • 相比之下,在PHP:'' || 'hello' == true;

现在,

  • 怎么叫布尔运算符的这种行为?
  • 这是否也适用于JavaScript的所有浏览器?

回答

2

由于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)。

1

它被称为“合并”。它应该在任何声称合规的浏览器中表现相同。