猿问

js 变量难点,谁能把我整明白了

var a = {name:"1"}

function fn(obj){

    obj.name = "2";

    obj = {name:"3"};

}

fn(a);

a.name  // "2"

为什么输出是2

繁星点点滴滴
浏览 831回答 2
2回答

慕丝7291255

楼上说的还不够详细。这里涉及到arguments,在对obj赋值之前,obj也就是arguments[0]一直都是对a的引用,赋值操作断开了这个引用链,为obj重新指定了一个引用即一个新的对象{name:'3'}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答