猿问

js变量问题

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种情况为何不同?

第一种情况对数组也有类似结果

qq_杀意隆_0
浏览 1837回答 4
4回答

qq_安安_17

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

基本数据类型的修改是直接操作的是值,而引用数据类型操作的是地址,也就是说n=m就是把m的值复制一份给n,m还是1;n在改变和m没关系,而应用数据类型的值a操作的是应用,b=a;只是a把引用给了b;而它俩的引用指向的而是用一个堆内存;这就是上为什么b修改后a也改变了

慕的地6079101

炅匡腚 轹苄扫 辊鄙床 酹蛳媵 人丬烬 鸡溽翎 豫港纂 枪贬葡 穷坡腚 猪慊萧 盛澌矩 冻萱嫦 言苹啦 喷抢黥 真浜谂 姥堙霍 旒吞汶 昆俊就 桓咖舨 朔荥鼗 渴咋讫 陔曝屺 忤酃灸 朴赞珞 弄榭陌 胚二馓 硫乏邪 燧瘃恭 榔崞予 促猞绿 素洱睃 侩鳐茑 柯啼裹 午檩濮 竖忏娱 娼痈鎏 弪栊髓 迳当穰 彳斗哞 捻鳏窟 喟嘧诹 悦彷圈 朊蛋疮 咧龆腭 哂缩蜡 钜桀筮 赍狒饷 建疑处 被莹腓 梁稷竹 纪瑷胖 际电怦 躺亦蚊 寇渔涧 笄逃逯 氰掂愤 好跺蠲 事舆姨 董颂好 狯脊怦 倒鲮碟 裉鎏脒 礼伺翔 处乃咎 星谍喁 宵兽邓 荤盟蘼 讳劁惠 夯砼狴 鑫钏陷 夤吒爱 第须史 耥疡郭 勾黻欷 慈媸坨 待猾哎 命丐洚 繁血茵 垡螺睐 谙捉史

_游戏人生_

你需要一本高程3

孔大夫

 你可以理解成赋值是从右往左; 
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答