abr*_*raj 1 javascript operator-precedence
根据JavaScript 的运算符优先级表,我可以看到 的&&优先级高于||.
因此,对于以下代码片段:
let x, y;
let z = 5 || (x = false) && (y = true);
console.log(z); // 5
console.log(x); // undefined
console.log(y); // undefined
Run Code Online (Sandbox Code Playgroud)
我认为&&应该首先评估该部分,然后在该部分短路后&&,x将被分配值false。然后,||才会尝试进行评估。
但是,从 的输出中console.log,我可以清楚地看到这里的情况并非如此。
有人可以帮我吗?我在这里缺少什么?
提前致谢。
&&of 的运算符优先级||意味着:
let z = 5 || (x = false) && (y = true);
Run Code Online (Sandbox Code Playgroud)
被评估为:
let z = 5 || ((x = false) && (y = true));
Run Code Online (Sandbox Code Playgroud)
而不是作为
let z = (5 || (x = false)) && (y = true);
Run Code Online (Sandbox Code Playgroud)
它并不指示何时计算运算符每一侧的值。这是由每个操作员的机制来完成的。例如,对于||,它在此处指定:
let z = 5 || (x = false) && (y = true);
Run Code Online (Sandbox Code Playgroud)
它在运行GetValue(lref)之前进行评估GetValue(rref)。
换句话说,运算符优先级指示哪些标记应用于哪个运算符以及以什么顺序,但不指示给定运算符如何/何时计算其左侧和右侧的值。
| 归档时间: |
|
| 查看次数: |
941 次 |
| 最近记录: |