php - JavaScript中把一个关联数组a赋值给b,然后改变a的内容,为什么b也跟着发生变化?
ringa_lee
ringa_lee 2017-04-10 17:29:35
[JavaScript讨论组]
JS:
var a = {"Client":"jQuery","Server":"PHP"};
var b = a;
a["New"] = "Element";
console.log(b);
// 输出 Object { Client="jQuery",  Server="PHP",  New="Element"}

PHP例程1:
$a = array('Client'=>'jQuery','Server'=>'PHP');
$b = $a;
$a['New'] = 'Element';
var_export($b);
//输出 array('Client'=>'jQuery','Server'=>'PHP')

PHP例程2:
$a = array('Client'=>'jQuery','Server'=>'PHP');
$b = &$a; //引用赋值
$a['New'] = 'Element';
var_export($b);
//输出 array('Client'=>'jQuery','Server'=>'PHP','New'=>'Element')

JavaScript中把一个关联数组a赋值给b,然后改变a的内容,为什么b也跟着发生变化?

ringa_lee
ringa_lee

ringa_lee

全部回复(5)
黄舟

对于数组这种非普通类型(字符串,整型,布尔),你的赋值相当于地址拷贝,就是a、b占用了同一段地址。所以改了b,a也会变,本质上a、b就是一个东西。

大家讲道理

因为a跟b指向的都是同一个数组呀。

迷茫

要想做到不改变,就先把对象转化成字符串,再转化回来对象,就是两个不同的对象了。直接用的话,其实就是一个。楼上已经给出正解。

PHP中文网

这个是php和js的一个不同点,js对数组传递是引用的,但是php的是值传递

怪我咯

js对数组传递是引用的

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

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