【发布时间】:2021-12-26 14:06:52
【问题描述】:
在developer.mozilla 网站上有一些例子展示了逻辑或运算符的不同用法,但这两个例子引起了我的注意,它们是:
o8 = '' || false // f || f returns false
o9 = false || '' // f || f returns ""
为什么这两个,返回不同的结果?我希望它们都返回 false。
【问题讨论】:
-
来自同一页面:“如果
expr1可以转换为true,则返回expr1;否则,返回expr2” -
布尔运算符使用所谓的“短路”——如果第一个操作数是“真”,则不计算第二个,如果第一个操作数是“假”,则第二个不是评估。但是在第一种情况下,第一个是“假的”,所以它继续到第二个,并返回它。在第二种情况下,它的作用相同
-
还要注意
a - b和b - a可能导致不同的值。||运算符规定了评估顺序。 -
在第一个示例中,
''被强制转换为要由||评估的布尔值,在第二个示例中,它作为字符串返回。 -
@pilchard 第一个表达式中的
false结果是||运算符之后的显式false,而不是强制字符串。
标签: javascript logical-operators logical-or