JS中如何实现变量的连续赋值操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计372个文字,预计阅读时间需要2分钟。
今天我们来聊一个JS变量的连续赋值问题,不多说,先上代码:
javascriptvar a={ n: 1 };var b=a.x=a={ n: 2 };console.log(a);console.log(b);
输出结果为:{ n: 2 }{ n: 1, x: { n: 2 } }
这是为什么呢?
今天我们来聊一个JS变量的连续赋值问题
废话不多说,先上代码
var a = { n: 1 } var b = a a.x = a = {n: 2}
我们打印下 a 和 b
// a 的打印结果为 {n: 2} // b 的打印结果为 {n: 1, x: { n: 2 }}
这是为什么呢?
其实,我们 JS 的连续赋值是从右向左开始运算的
也就是,先运算的 a = { n: 2 }
再运算的是 a.x = a, 这时的 a 已经是 { n: 2 }了,但需要注意的是,a 是引用类型,而参与运算的 a.x 是一个通过引用地址找到的一个属性,这个引用地址是 a,同时也是b。也就是说,b.x = { n: 2 } 。
当此行代码运行结束的时候,a 就是 { n: 2 }, b 就是 { n: 1, x: { n: 2 } } 了。
本文共计372个文字,预计阅读时间需要2分钟。
今天我们来聊一个JS变量的连续赋值问题,不多说,先上代码:
javascriptvar a={ n: 1 };var b=a.x=a={ n: 2 };console.log(a);console.log(b);
输出结果为:{ n: 2 }{ n: 1, x: { n: 2 } }
这是为什么呢?
今天我们来聊一个JS变量的连续赋值问题
废话不多说,先上代码
var a = { n: 1 } var b = a a.x = a = {n: 2}
我们打印下 a 和 b
// a 的打印结果为 {n: 2} // b 的打印结果为 {n: 1, x: { n: 2 }}
这是为什么呢?
其实,我们 JS 的连续赋值是从右向左开始运算的
也就是,先运算的 a = { n: 2 }
再运算的是 a.x = a, 这时的 a 已经是 { n: 2 }了,但需要注意的是,a 是引用类型,而参与运算的 a.x 是一个通过引用地址找到的一个属性,这个引用地址是 a,同时也是b。也就是说,b.x = { n: 2 } 。
当此行代码运行结束的时候,a 就是 { n: 2 }, b 就是 { n: 1, x: { n: 2 } } 了。

