var a = [3, 4, 5];
var b = [6, 7, 8];
function why() {
b = a;
b[0] = 1;
alert(a[0] + ' ' + b[0]);
}
why();
Run Code Online (Sandbox Code Playgroud)
结果是a[0]=1, b[0]=1;.好像JavaScript正在通过引用传递?
但在这种情况下:
var a = [3, 4, 5];
var b = [6, 7, 8];
function why() {
b = a;
b = [1, 2, 3];
alert(a + ' ' + b);
}
why();
Run Code Online (Sandbox Code Playgroud)
结果是a=[3,4,5]和b = [1,2,3].它为什么通过价值?如何避免通过引用传递?
像大多数对象语言一样,非原始变量的值是对象的引用.
在第二种情况下,您不是要更改数组,而是更改存储的引用b.
如果要复制阵列,请使用
var c = a.slice();
Run Code Online (Sandbox Code Playgroud)
然后c,a将独立发展.
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |