Javascript数组奇怪的行为
按照惯例,据我所知Javascript数组奇怪的行为,javascript,arrays,Javascript,Arrays,按照惯例,据我所知 基本数据类型在传递值和 复杂数据类型在按引用传递下工作 如果是的话 var ary = [1,2,3]; var dupAry = ary; //Now I am going to rewrite the ary variable as follows ary = [3,4,5]; 现在我记录ary和dupAry的值,它记录不同的值。按照标准,两个数组都应该返回vaues 那么为什么它返回不同的数组值呢 另一种情况 var ary = [1,2,3];
- 基本数据类型在传递值和
- 复杂数据类型在按引用传递下工作
var ary = [1,2,3];
var dupAry = ary;
//Now I am going to rewrite the ary variable as follows
ary = [3,4,5];
现在我记录ary和dupAry的值,它记录不同的值。按照标准,两个数组都应该返回vaues
var ary = [1,2,3];
var dupAry = ary;
//No I gonna apply splice method to the ary.
ary.splice(0,1);
现在,两个数组返回相同的值,并且可以很好地使用其标准值
ary
指向dupAry
的数组指定一个引用。ary
和dupAry
现在都持有指向同一数组对象的引用。如果现在为ari
指定了其他值,则dupAry
将继续保留指向数组对象的引用,ari
将保留其他值
通过给变量赋值,您并不是在修改变量已经持有的对象;您正在修改变量所包含的对象引用
这将修改两个变量所指向的实际对象,以便两者都能看到更改
这将为ary
指向dupAry
的数组指定一个引用。ary
和dupAry
现在都持有指向同一数组对象的引用。如果现在为ari
指定了其他值,则dupAry
将继续保留指向数组对象的引用,ari
将保留其他值
通过给变量赋值,您并不是在修改变量已经持有的对象;您正在修改变量所包含的对象引用
这将修改两个变量所指向的实际对象,以便两者都能看到更改。执行此操作时:
ary = [3,4,5];
。。。您并没有更改数组:您正在销毁以前的引用,并使用一个全新的数组创建一个全新的变量*。请看以下内容的区别:
ary.push(99);
(*)当然,这不是一个新的变量,我不知道如何使用它。当您这样做时:
ary = [3,4,5];
。。。您并没有更改数组:您正在销毁以前的引用,并使用一个全新的数组创建一个全新的变量*。请看以下内容的区别:
ary.push(99);
(*)当然,这不是一个新的变量,我不知道怎么用词。当你做
ari=[3,4,5]
为ary分配一个新数组,并在创建ary=[3,4,5]时中断ary
和dupAry
之间的引用
将一个新数组分配给ary,并断开ary
和dupAry