运算符优先级
运算符的优先级决定了表达式中运算执行的先后顺序,优先级高的运算符最先被执行。
虽然这句话是这么的直白,但总是会遗忘。
一次错误
来源于一个 15年(五年前)的提问,没想到我第一反应还是错了。
var a = {n: 1};
var b = a;
a.x = a = {n: 2};
alert(a.x); // --> undefined
alert(b.x); // --> {n:2}
在这里我忽略了 .
的执行优先级是高于 =
操作的,也就是一开始 a.x
就指向了 {n: 1}
的 heap 空间
,最后的结果也显而易见了。