gpt4 book ai didi

javascript - 为什么 javascript "for loop"对不同类型的对象有不同的行为

转载 作者:搜寻专家 更新时间:2023-11-01 04:35:10 27 4
gpt4 key购买 nike

我意识到 JavaScript 没有指针,但是我注意到循环遍历包含对象的数组时的这种“指针”行为,但没有注意到数组包含数字(例如)时的类似行为。

var ARR_num = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (var i = 0, len = ARR_num.length; i < len; i++) {
var item = ARR_num[i];
item++;
}
console.log(ARR_num);
//Outputs [0,1,2,3,4,5,6,7,8,9]

现在有一个包含对象的数组

var ARR_obj = [{}, {}, {}];
for (var i = 0, len = ARR_obj.length; i < len; i++) {
var item = ARR_obj[i];
item.pointer = true;
}
console.log(ARR_obj);
//Outputs [{pointer: true}, {pointer: true}, {pointer: true}]

为什么会有这两种截然不同的行为?

最佳答案

为什么会有这两种截然不同的行为?

当您将一个对象分配给另一个变量时,新变量指向相同的对象,因此当您更改新变量的属性时,对象会发生变化示例:

var a= {name: "some"};
var b = a;
b.name = "newName";
console.log(a.name);// "newName"

当你将一个原始类型赋值给另一个变量时,它只是一个新变量,并没有引用旧变量,因此改变新变量不会影响旧变量。示例:

var a = "some";
var b = a;
b = "newName";
console.log(a);//"some"

希望这会有所帮助!

关于javascript - 为什么 javascript "for loop"对不同类型的对象有不同的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45794111/

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