在我与您在一起的
if陈述的上下文中,这是完全安全的,因为在内部,该
ToBoolean操作将在条件表达式上执行(
请参阅规范的第3步 )。
但是,如果要从函数返回布尔值,则应确保结果实际上是布尔值,例如:
function isFoo () { return 0 && true;}console.log(isFoo()); // will show zerotypeof isFoo() == "number";总之,布尔逻辑运算符可以返回操作数 ,而不一定返回
Boolean结果:
如果第一个 操作数 是 真实的
&&,则逻辑AND运算符()将返回 第二个操作数 的值: __
true && "foo"; // "foo"
如果它本身是 falsy ,它将返回 第一个操作数 的值: __
NaN && "anything"; // NaN0 && "anything"; // 0
另一方面,如果第一个 操作数 为 falsy ,则逻辑OR运算符(
||)将返回 第二个操作数 的值: __
false || "bar"; // "bar"
如果它本身不是伪造的,它将返回 第一个操作数 的值:
"foo" || "anything"; // "foo"
也许这是值得一提的是, falsy 值是:
null,
undefined,
NaN,
0,零长度字符串,当然
false。
在 布尔上下文中 评估的任何其他内容(不是 虚假的,
Boolean对象或
Boolean值)都将返回。 __
true



