对象和属性的连续赋值
以下代码,运行会输出什么
let a = { n: 1 }
let b = a
a.x = a = { n: 2 }
console.log(a.x) // undefined
console.log(b.x) // { n: 2 }
值类型 vs 引用类型
let a = 100
let b = a
let a = { n: 1 }
let b = a
1
连续赋值
连续赋值是倒序执行。
PS:日常工作不可用连续赋值,可读性差
let n1, n2
n1 = n2 = 100
// // 相当于
// n2 = 100
// n1 = n2
a.x 比 赋值的优先级高
let a = {}
a.x = 100
// 可拆解为:
// 1. a.x = undefined // 初始化 a.x 属性
// 2. a.x = 100 // 为 x 属性赋值
2