2010-03-07 7 views

답변

5

당신이 "pass-by-reference을"라고 요구하고 있습니다. Javascript는 기본 유형 (int, string 등)에 "pass-by-value"을 사용합니다. 다른 유형은 참조별로 전달됩니다. 귀하의 구체적인 경우, 나는 당신이 원하는 것을 얻는 두 가지 방법을 생각할 수 있습니다. 첫째는 하나의 요소로 배열 전달하고 해당 요소를 수정 발신자 요구하는 것이다

function updateURL(url, name, param) { 
    url[0] = url[0] + "&" + name + "=" + param; 
} 
url = ['http://www.google.com/?']; 
updateURL(url, 'foo', 'bar'); 
alert(url[0]); 

번째 방법은 객체의 속성을 사용하는 것이다 :

function updateURL(url, name, param) { 
    url.url = url.url + "&" + name + "=" + param; 
} 
url = new Object(); 
url.url = 'http://www.google.com/?'; 
updateURL(url, 'foo', 'bar'); 
alert(url.url); 
+0

아, 알겠습니다. 내 경우에는 정말로 그럴만 한 가치가 없습니다. 감사. –

1
function parentFunction() { 
    var url = 'http://www.example.com?qs=1'; 
    var name = 'foo'; 
    var param= 'bar'; 
    var newUrl = updateURL(url, name, param); 
} 

function updateURL(url, name, param) { 
    url = url + "&" + name + "=" + param; 
    return url; 
} 
+0

고맙지 만 케이 이건 그냥 함수의 반환 값을 설정하지 않습니까? 다음과 같이하고 싶습니다. function parentFunction() { var url = ''; var name = ''; var param = ''; updateURL (url, name, param); } –

+0

흠, 아니이 "http://www.example.com?qs=1&foo=bar"를 참조하십시오 –

+0

내가 뭘 찾으려고하지만, 자바가 "아웃"매개 변수가 있거나 모든 매개 변수입니다 "in"매개 변수? –

0
var myUrl = updateUrl('url', 'name', 'param'); 

function updateURL(url, name, param) { 
    url = url + "&" + name + "=" + param; 
    return url; 
} 
관련 문제