以前一直以为,给函数传递了对象,那么在函数体内对对象属性的更改,必然可以在全局反映出来。比如:var setName=function(o){ o.name='xiaoha';};var o1={};setName(o1);console.log(o1.name);//'xiaoha'这没错啊,运行结果跟自己想的一模一样的。可是看了高程3后,发现想错了。如下:var setName=function(o){ o.name='xiaoha'; o={}; o.name='22222';};var o1={};setName(o1);console.log(o1.name);//'xiaoha'这个怎么解释,才能让人心服口服啊!高程3解释,还是不懂啊!
6 回答
炎炎设计
TA贡献1808条经验 获得超4个赞
JS中都是参数传递都是传值的,只不过是在涉及到对象时,传的是地址信息
当一个对象标识符被重新赋值时,其对应的地址就会发生变化,对应到不同的地址空间上
而原始标识符对应的地址没有被修改,所以就这样了~~~~
添加回答
举报
0/150
提交
取消