Javascript运算符优先级和结合性

218 阅读1分钟

先放上mdn上关于运算符优先级关联性的汇总表 developer.mozilla.org/zh-CN/docs/…

例一:

    var a =42;
    var b = "foo";
    var c = false;
    var d = a && b || c ? c || b ? a : c && b : a;
    d; //42

通过查询表格,我们可以把上面代码分解:

var d = ((a && b) || c ) ? (( c || b ) ? a :(c && b)) : a
| 6 | [逻辑与] | 从左到右 | … && … |
| 5 | [逻辑或] | 从左到右 | … || … |
| 4 | [条件运算符] | 从右到左 | … ? … : … |
逐一执行
(a && b) 结果为:''foo"
"foo" || c 结果为 :"foo"
第一个?中,"foo"为真值
(c || b)结果为:"foo"
第二个?中,"foo"为真值
a的值为42
最后结果为42

例二

var a={n:1};
var b=a;
a.x=a={n:2}
a.x;  //undefined
b.x;  //{n:2}

具体说明在:www.cnblogs.com/aishangyizh…