gpt4 book ai didi

javascript - 为什么功能改变的对象会改变它们在内存中指向的内容,但有时会创建一个新的内存对象?

转载 作者:行者123 更新时间:2023-11-30 08:06:30 25 4
gpt4 key购买 nike

<分区>

我正在阅读 this blog关于如果一个对象或数组在函数内部发生变化,指向的内存中的值也会发生变化,就像它在函数外部发生变化一样。

var a = [1,2,3],
b = a;

b[0] = 5;
console.log(a); // [5, 2, 3]

结果与

相同
var a = [1,2,3],
b = a;

var arrayFunction = function(arr){
arr[0] = 10;
};

var arr = arrayFunction(b);

console.log(a, b, arr) // [10, 2, 3], [10, 2, 3], [10, 2, 3];

但我无法理解的是,为什么在函数内重新分配多个数组值不会更改函数外的值:

var a = [1,2,3],
b = a;

var arrayFunction = function(arr){
arr = ["a", "b", "c"];
return arr;
};

var result = arrayFunction(b);
console.log(result) //["a", "b", "c"]
console.log(a, b); //[1, 2, 3], [1, 2, 3]

为什么这不像第一个例子那样改变内存中指向的值?

the JSBIN 上编写示例可能会更好

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com