The*_*zle 9 javascript node.js
使用node.js控制台(节点0.10.24)
> var x = (undefined && true);
undefined
> x;
undefined
> x = (true && undefined);
undefined
> x;
undefined
Run Code Online (Sandbox Code Playgroud)
为什么比较返回未定义?我希望它返回false,因为undefined被认为是"假的".
Poi*_*nty 11
在&&由操作者进行内部胁迫的表达式的值到布尔值,但结果操作者总是失败的第一个表达式(即,这是falsey)的实际,不受胁迫值.
因此(true && undefined)会导致undefined因为true是不 falsey.同样,(true && 0)会评估0.
在JavaScript ||和&&不保证返回布尔值,只会做,当操作数都是布尔.
a = b || c 本质上是一个快捷方式:
a = b ? b : c;
Run Code Online (Sandbox Code Playgroud)
a = b && c 本质上是一个快捷方式:
a = b ? c : b;
//or
a = !b ? b : c;
Run Code Online (Sandbox Code Playgroud)
为了形式化其他人所说的内容,以下是ECMAScript 规范中关于如何评估逻辑 AND 运算符的内容:
- 令 lref 为计算 LogicalANDExpression 的结果。
- 令 lval 为 GetValue(lref)。
- 如果 ToBoolean(lval) 为 false,则返回 lval。
- 令 rref 为计算 BitwiseOREExpression 的结果。
- 返回 GetValue(rref)。
也许最相关的是第 11.11 节底部的注释:
&& 或 || 产生的值 运算符不一定是布尔类型。生成的值始终是两个操作数表达式之一的值。
| 归档时间: |
|
| 查看次数: |
6767 次 |
| 最近记录: |