Flanagan的O'Reilly JavaScript书指出:
如果这些逻辑运算符未将操作数转换为 bool(boolean) 值,则该表达式如何求值?
最佳答案
根据specification第11.11节:二进制逻辑运算符:
[评估&&
]的产生如下评估:
ToBoolean(lval)
为false,则返回lval。 [评估
||
]的产生如下评估:ToBoolean(lval)
为true,则返回lval。 因此,在内部将值“转换为 bool(boolean) 值”。但是,由于从不公开-整个语义解释都是可以“/被优化”的抽象,因此
&&
和||
的行为可以通过使用真假值(ToBoolean
)来简单解释。涵盖:真值是ToBoolean
返回true的值,其他所有值都是falsy)。&&
的逻辑表是:a b结果
诚实的任何b
虚假的任何一个
||
的逻辑表是:a b结果
说实话
虚假的任何b
请注意,返回的是
a
或b
的评估。快乐的编码。
为了完整起见,请参见第9.2节:
抽象操作
ToBoolean
将其参数转换为boolean类型的值,作为...