为了账号安全,请及时绑定邮箱和手机立即绑定

js变量问题

js变量问题

qq_杀意隆_0 2017-08-25 22:10:31
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;
/*按值访问,操作的是他们实际保存的值;*/


查看完整回答
2 反对 回复 2017-08-25
  • qq_杀意隆_0
    qq_杀意隆_0
    我不是计算机专业。“按引用”‘按值’‘栈’‘堆内存’这些概念是哪些专业基础课的?我去看看书
  • qq_杀意隆_0
    qq_杀意隆_0
    是否第一种情况就类似于文件的快捷方式,第二种情况类似于文件的复制?
  • qq_安安_17
    qq_安安_17
    栈、堆是数据结构的,至于引用类型,基本数据类型。js书籍就有。java和C类似的这些都有,我也不是计算机系的,但学一门基础语言是大学的必修吧,其实很多理念是一样的
点击展开后面1
?
Kingziqiang

TA贡献5条经验 获得超2个赞

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

查看完整回答
1 反对 回复 2017-08-25
  • qq_杀意隆_0
    qq_杀意隆_0
    因为a是对象,所以就是引用?什么是引用数据类型
  • qq_杀意隆_0
    qq_杀意隆_0
    是否第一种情况就类似于文件的快捷方式,第二种情况类似于文件的复制?
?
_游戏人生_

TA贡献31条经验 获得超92个赞

你需要一本高程3

查看完整回答
1 反对 回复 2017-08-26
点击展开后面2
?
孔大夫

TA贡献6条经验 获得超0个赞

 你可以理解成赋值是从右往左; 

查看完整回答
反对 回复 2017-08-26
  • 4 回答
  • 0 关注
  • 1836 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信