我有以下简单的脚本.
在浏览器中运行它将显示两个警告框:
this.a [0] = 11 this.b = 10
和
this.a [0] = 12 this.b = 10
问题是,为什么this.a [0]的值会增加?我正在指定"y = this.a"并将"y"的元素更新为"y [0] ++;"?
与此同时,"b"发生了同样的事情:"z = this.b; z ++".然而,"this.b"仍然等于10.
如何在不影响"this.a"的情况下更改本地范围中"y [0]"的值?
有任何想法吗?
谢谢!
a
是一个数组,你只是简单地复制对数组的引用y
.您需要将数组a
的内容复制到新数组中 y
(使用Array.slice()
(y = a.slice()
在您的情况下)是最简单的方法).
(或者,如果您只需要a[0]
,您可以设置y = a[0]
.后续更改y
将不会影响a[0]
,因为您正在复制该值.)
请参阅"JavaScript数组分配通过参考"和"带有数组值"的部分这篇文章以获取更多信息.