对于逻辑或运算符 ||
,其规则是如果左操作数为真(truthy),则返回左操作数的值;如果左操作数为假(falsy),则返回右操作数的值。
在 JavaScript 中,以下值被视为假(falsy):
false
:布尔值 falsenull
:表示一个空对象指针的特殊关键字undefined
:表示未定义的值0
:数字零NaN
:非数值
如果左操作数为假(falsy),那么表达式 y || 'World'
的结果将为 'World'
,无论右操作数 'World'
是什么值。
现在来看你提到的情况 undefined || 'World'
,在这种情况下,左操作数 undefined
是假(falsy)的,因此结果将为 'World'
。同样地,false || 'World'
的结果也是 'World'
,因为 false
也是假(falsy)的。
这是因为逻辑或运算符会返回第一个真(truthy)的操作数。如果左操作数为假(falsy),那么会继续计算右操作数,然后返回第一个真(truthy)的操作数。
所以,undefined || 'World'
和 false || 'World'
的结果都是 'World'
,因为它们的左操作数都是假(falsy)值。