javascript - js复制时是传递引用还是传递值
怪我咯
怪我咯 2017-04-10 15:44:22
[JavaScript讨论组]

下面代码


var a=[1,2,3];
var b=a;
a[0]=[4];
alert(b);//4,2,3

var a=[1,2,3];
var b=a;
a=[4,2,3];
alert(b);//1,2,3
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(3)
天蓬老师

不是原始类型的值在赋值就是引用传递

ringa_lee

基本类型是值传递,相当于复制了一份。引用类型其实也是复制,只不过值比较特殊,是指针或者叫做引用,所以a和b指的是一块内存地址,对a[0]修改相当于对b[0]修改。但你第二个例子,相当于从新申请了内存空间,此时,a和b已经不再指向同一块内存。

PHP中文网

第一部分应该没疑问吧,a[0] = 4表示a数组的0下标位置被换成了4

第二部分最后输出结果令人意外是因为,一开始的b = a表示b现在和a一样,都指向相同的内存数组对象[1, 2, 3]。而之后的a = [4, 2, 3]表示将a变量的指向到了另一个内存数组对象[4, 2, 3]上,这时候实际上ab已经是完全不同指向的变量了,所以你会看到这样的结果

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号