在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)。
它被稱爲「合併」。它應該在任何聲稱合規的瀏覽器中表現相同。