gpt4 book ai didi

Javascript:数组的简单但奇怪的行为?

转载 作者:行者123 更新时间:2023-11-28 15:39:15 24 4
gpt4 key购买 nike

测试1:

var arr1 = [10, 20];
var arr2 = arr1;

arr2[0]++;

alert(arr1);// [11, 20] --- What?!?!
alert(arr2);// [11, 20] --- correct

测试2:

var arr1 = [10, 20];
var arr2 = [arr1[0], arr1[1]];

arr2[0]++;

alert(arr1);// [10, 20] --- correct
alert(arr2);// [11, 20] --- correct

在测试 1 中,为什么第一个数组的第一个元素发生了变化?据我所知,在 Java 和 PHP 等其他 OOP 语言中,如果我们执行测试 1 的 var arr2 = arr1; 这称为“引用”,一旦我们使用新变量的值更改某些内容,它为此创建一个新值,因此第一个引用“arr1”不会受到影响。为什么它在 Javascript 中不一样!?这完全没有道理!这是一个错误吗?或者只是 Javascript 的行为不同?

最佳答案

JavaScript 变量引用对象。当变量"is"对象时,它包含对该对象的引用。将此类变量的值分配给另一个变量只是传递引用;它创建引用对象的副本。

关于Javascript:数组的简单但奇怪的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24472072/

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