var a={x:1};
var b=a;
b.x=2;
//本来只修改b,结果b和a的值都变成{x:2}
var m=1;
var n=m;
n=2;
//结果只有n变为2,m还是1上面2种情况为何不同?第一种情况对数组也有类似结果
4 回答
qq_安安_17
TA贡献49条经验 获得超52个赞
var a={x:1};//a为object:引用数据类型。a有x属性,属性值为1 var b=a;//b也为object b.x=2;//访问并修改引用数据类型的属性 /*按引用访问,当查询时, *我们需要先从栈中读取内存地址 然后再找到保存在堆内存中的值; */ var m=1;//基本数据类型 var n=m; n=2; /*按值访问,操作的是他们实际保存的值;*/
Kingziqiang
TA贡献5条经验 获得超2个赞
基本数据类型的修改是直接操作的是值,而引用数据类型操作的是地址,也就是说n=m就是把m的值复制一份给n,m还是1;n在改变和m没关系,而应用数据类型的值a操作的是应用,b=a;只是a把引用给了b;而它俩的引用指向的而是用一个堆内存;这就是上为什么b修改后a也改变了
慕的地6079101
TA贡献3593条经验 获得超0个赞
炅匡腚
轹苄扫
辊鄙床
酹蛳媵
人丬烬
鸡溽翎
豫港纂
枪贬葡
穷坡腚
猪慊萧
盛澌矩
冻萱嫦
言苹啦
喷抢黥
真浜谂
姥堙霍
旒吞汶
昆俊就
桓咖舨
朔荥鼗
渴咋讫
陔曝屺
忤酃灸
朴赞珞
弄榭陌
胚二馓
硫乏邪
燧瘃恭
榔崞予
促猞绿
素洱睃
侩鳐茑
柯啼裹
午檩濮
竖忏娱
娼痈鎏
弪栊髓
迳当穰
彳斗哞
捻鳏窟
喟嘧诹
悦彷圈
朊蛋疮
咧龆腭
哂缩蜡
钜桀筮
赍狒饷
建疑处
被莹腓
梁稷竹
纪瑷胖
际电怦
躺亦蚊
寇渔涧
笄逃逯
氰掂愤
好跺蠲
事舆姨
董颂好
狯脊怦
倒鲮碟
裉鎏脒
礼伺翔
处乃咎
星谍喁
宵兽邓
荤盟蘼
讳劁惠
夯砼狴
鑫钏陷
夤吒爱
第须史
耥疡郭
勾黻欷
慈媸坨
待猾哎
命丐洚
繁血茵
垡螺睐
谙捉史
添加回答
举报
0/150
提交
取消