2010-07-12 61 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

它被稱爲「合併」。它應該在任何聲稱合規的瀏覽器中表現相同。