2013-03-31 4 views
0

I는 I 변수를 만들어 그 값자바 스크립트에서 전달 된 변수의 값을 반환하지 않고 변경 하시겠습니까?

function change(x) { 
    x=26; 
} 

을 정수를 취하고 변경 기능 변화 (X)가 나는 값을

window.onload=function(){ 
    var a = 10; 
    change(a); 
    console.log(a); 
} 

아무튼 변경하려고 내가 기대했던대로 변하지 않는다. return을 사용하지 않고 JavaScript에서이 동작을 간단한 방법으로 달성 할 수 있습니까? 나는 객체와 전역을 피하는 것을 선호한다.

여기 내 전체 코드입니다 :

<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 
    <script> 
    function change(x) { 
     x=26; 
    } 
    window.onload=function(){ 
     var a = 10; 
     change(a); 
     console.log(a); 
    } 
    </script> 
</body> 
</html> 
+2

예,'A = 변화를 도움이되기를 바랍니다 (A); ' – JJJ

+0

이 답변을 확인하십시오 : http://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference-or-pass-by-value-language?rq=1 – NilsH

답변

1

자바 스크립트는 항상 값에 의해 인수를 전달합니다, 그래서 당신은 원래 작성된 당신은 그것을 할 수 없습니다.

그러나 개체의 값은 참조이므로 개체를 사용할 수 있습니다.

그러나이 경우에는 혼란을 겪을 수 있습니다. 이 함수는 변환 된 숫자를 반환해야합니다.

+0

문제는 내 "변경"함수 안에 콜백 함수가 있으므로 값을 반환 할 수 없습니다. 나는 그 때 '정의되지 않은'것을 얻는다. – Pithikos

+0

@Pithikos 콜백 함수를 사용해야합니다. – dfsq

+1

"그러나 객체의 값은 참조입니다."변수의 값은 객체를 가리키는 참조입니다. – newacct

0

변수를 참조로 전달할 수는 없습니다. 당신 할 객체를 전달하고 그 특성을 수정할 수 있습니다 :

function change(obj) { 
    obj.a = 4; 
} 

var obj = {a: 0}; 
change(obj); 

// obj.a is "4" now 
-2

내가 이런 짓을하고 일 :

function change(x) { 
    x=26; 
    return x; 
} 
    window.onload=function(){ 
    var a = 10; 
    console.log(change(a)); 
} 

그것이

+0

'window.onload' 함수의 끝 부분에'console.log (a)'를 추가하면 잘못된 것으로 판명됩니다. –

관련 문제