2012-02-24 2 views
0

가능한 중복 :
JavaScript Pass Variables Through Reference기능 (PARAM) - 같은 PHP에서

어떻게 자바 스크립트에서 이런 일을 할 수 있습니까?

PHP에서는 매개 변수 앞에 함수 &을 넣을 수 있습니다. 직접 변수에 쓸 수 있습니다. 어떻게 자바 스크립트에서 이와 같이 할 수 있습니까?

+1

그것. – Iznogood

+0

당신은 정확하게 할 수 없습니다. 모든 객체는 참조로 전달되므로 전달되는 객체는 수정할 수 있지만 객체가 저장되는 위치는 수정할 수 없습니다. – zzzzBov

답변

2

JavaScript에서는 값이 값으로 함수에 전달됩니다. 그러나 객체는 참조로 전달됩니다.

전달 값 :

function myfunction(x) 
{ 
     // x is equal to 4 
     x = 5; 
     // x is now equal to 5 
} 

var x = 4; 
alert(x); // x is equal to 4 
myfunction(x); 
alert(x); // x is still equal to 4 

전달 개체 :

function myobject() 
{ 
    this.value = 5; 
} 
var o = new myobject(); 
alert(o.value); // o.value = 5 
function objectchanger(fnc) 
{ 
    fnc.value = 6; 
} 
objectchanger(o); 
alert(o.value); // o.value is now equal to 6 

자료 : referance에 통과라는 http://snook.ca/archives/javascript/javascript_pass

+1

구체적인 차이점은 첫 번째 예제에서'x = 5' 라인은'x'의 원래 매개 변수 값을 버리고'5'로 대체한다는 것입니다. 두 번째 예제에서'fnc' 변수는 이런 방식으로 대체되지 않으므로 전달 된 원래 객체가 업데이트됩니다. – Gareth

0

개체를 함수로 전달하면 함수에 대한 참조를 전달한 것으로 간주됩니다. 는

var intVal = { val: 0 }; 

같은 전에 객체는 함수에 전달하고 여전히 실제 변수를 수정할 수 있습니다 그 방법을 포장 수, 원시 값에 대한 유사한 효과를합니다.