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;
/*按值访问,操作的是他们实际保存的值;*/