您好,欢迎访问一九零五行业门户网

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

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也跟着发生变化?
回复内容: 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也跟着发生变化?
对于数组这种非普通类型(字符串,整型,布尔),你的赋值相当于地址拷贝,就是a、b占用了同一段地址。所以改了b,a也会变,本质上a、b就是一个东西。
这里这个回答比较详细,数组属于引用类型值,存储在堆中。https://www.zhihu.com/questio...
网上看到有人说,js中赋值时,原始类型(比如字符串)是复制值,引用类型(比如关联数组)是复制引用.
var a = {client:jquery,server:php};var b = json.stringify(a); //转成字符串后赋值a[new] = element;console.log(json.parse(b)); //使用时转回关联数组(对象)//输出 object { client=jquery, server=php}ie8不支持json.parse和json.stringify,需要引入json2.js:http://www.json.org/js.htmlhttps://github.com/douglascrockford/json-js/blob/master/json2.jsie9以下版本:
感觉js数组没有php灵活,php支持用&声明引用赋值,php数组是写时复制:
echo round(memory_get_usage()/(1024*1024)).mb\n; //0mb$a = file('/home/eechen/note.txt', file_ignore_new_lines | file_skip_empty_lines);echo round(memory_get_usage()/(1024*1024)).mb\n; //9mb$b = $a;echo round(memory_get_usage()/(1024*1024)).mb\n; //9mb(赋值后内存没有变化)$b['new'] = 'element';echo round(memory_get_usage()/(1024*1024)).mb\n; //14mb(修改后内存发生变化,即写时复制)
因为a跟b指向的都是同一个数组呀。
要想做到不改变,就先把对象转化成字符串,再转化回来对象,就是两个不同的对象了。直接用的话,其实就是一个。楼上已经给出正解。
其它类似信息

推荐信息