var a = {}
var b = {}
try{
a.x.y = b.e = 1 // Uncaught TypeError: Cannot set property 'y' of undefined
} catch(err) {
console.error(err);
}
console.log(b.e) // 1
var a = {}
var b = {}
try {
a.x.y.z = b.e = 1 // Uncaught TypeError: Cannot read property 'y' of undefined
} catch(err) {
console.error(err);
}
console.log(b.e) // undefined
b.z=1
和b.e=1
首先执行(考虑到=
的右结合性),然后a.x.y.z = ...
执行并失败;为什么在一个情况下'b'赋值通过而在另一个情况下不通过?” - Amadana.x
上不存在属性y
,但这在两种情况下都是正确的。为什么它会阻止第二种情况下的右侧赋值而不是第一种情况?执行顺序有何不同之处?(我提到语法错误是因为语法错误的时间点与运行时错误非常不同。) - Amadan