2011-12-01 2 views
0

changevar으로 구문 분석 한 후 howdothisvargetchanged이 다른 값을 갖는 이유는 무엇입니까? 변수가 범위 밖에있을 때 함수로 어떻게 바꿀 수 있습니까? 당신이 changevar()을 참조하여 howdoesthisvargetchanged을 통과하기 때문에함수 외부에서 변수를 변경하는 경우

(function() 
{ 
var howdoesthisvargetchanged = {'a': 'a', 'B': 'B', 'C': 'C'}; 
console.log(JSON.stringify(howdoesthisvargetchanged)); 
changevar(howdoesthisvargetchanged); 
console.log(JSON.stringify(howdoesthisvargetchanged)); 
function changevar(v) 
{ 
    v['C'] = 'why does this work?'; 
} 
})(); 

답변

2

그것은 작동합니다. changevar()에 변수를 다시 할당하려고하면 외부에서 아무 것도 일어나지 않습니다. 그러나 우리는 기존의 객체에 대한 참조를 가지고 있기 때문에 우리는 그 인스턴스에 대해 행동하고 있습니다. 해당 객체의 속성에 대한 변경 사항은 해당 객체에 액세스하는 다른 객체에 반영됩니다.

관련 문제