以下代码执行后president.name的值是
(function(callback){
president ={name:"bush"};
callback(president);
})(function(obj){
obj.name ="obama";
obj ={name:"clinton"};
})
答案是什么?求解答。。不是太懂。谢谢。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
答案是obama啊
president ={name:"bush"};这里最先执行. 执行后,window.president.name就是bush了.但是后面又执行了callback, 对president的name进行重新赋值为
obama.再后面的对obj重新赋值, 只是使obj不再对president有引用, 而是指向了新的一个object. 不影响president
@Treri 已经正确的回答了,我再详细说一下,。
你的代码可以等价于:
具体的
president的变化是这样的提示:你可以使用 chrome dev tool 调试,一步一步看就很明白了。
@杨军军@Treri以上两位大神的解释都没有错,我在他们的基础上补充点。
这里的重点是编程语言中很重要,但对新手来说也是难点的问题:函数参数是
传值还是传引用?其实,最终只有一个传参方式:
传值。因为,传引用本质上传的是对象对应的地址。本题在执行
foo函数时,president以参数的形式传给obj,obj和president指向同一地址,代表相同对象。但obj指向的改变并不影响president,只是obj与president再无任何关系。如果还是不懂的话,我可以给题主画图。