为什么Javascript的OR返回的值不是true / false?

为了获得浏览器视口宽度,我看到了这种结构:

function () { return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; }

我理解涉及的浏览器怪癖.我不明白的是为什么||返回值.所以我尝试了这个警报(undefined || 0 || 3);果然,它提醒3.我觉得这很离奇,因为我期待真假.谁能解释一下发生了什么?

解决方法:

看看ECMAScript标准部分11.11 Binary Logical Operators

The production LogicalORExpression :
LogicalORExpression ||
LogicalANDExpression is evaluated as
follows:

1.Evaluate LogicalORExpression.

2.Call GetValue(Result(1)).

3.Call ToBoolean(Result(2)).

4.If Result(3) is true, return Result(2).

5.Evaluate LogicalANDExpression.

6.Call GetValue(Result(5)).

7.Return Result(6).

因此它评估每个操作数的布尔转换,但返回操作数的实际值.

如果您想知道Javascript如何将值转换为布尔值,请参阅第9.2 ToBoolean

上一篇:python – 三箭(“>>>”)标志是什么意思?


下一篇:Mysql语法似乎正确