2014-05-19 4 views
-1

다른 함수 내에서 값을 할당하려고 시도했지만 작동하지 않습니다. 올바른 방법은 무엇입니까?어떻게 값을 할당합니까?

f = function() { 
    var foo = 6; 
    function() { 
    foo = 4; 
    }; 
    alert(foo); 
}; 
f(); 
+0

프로그램을 실행하려고 했습니까? – thefourtheye

+0

예, 시도했지만 작동하지 않습니다. 실제로 두 번째 함수는 아약스 콜백 함수입니다. – sajadkk

+0

클로저를 보려면 this [http://stackoverflow.com/questions/111102/how-do-javascript-closures-work]를 참조하십시오. 작동 중 – Lin

답변

2

당신은 함수를 호출하지 않는를 초기화해야합니다. 당신이 뭔가를 할 필요가 :

f = function() { 
    var foo = 6; 
    var func = function() { 
    foo = 4; 
    }; 
    func(); 
    alert(foo); 
}; 
f(); 

당신은 함수가 실제로 완전히 다른 문제이다 콜백, 코멘트에 표시된. 당신이 할 경우

f = function() { 
    var foo = 6; 
    somethingAsync(function() { 
    foo = 4; 
    }); 
    alert(foo); 
}; 
f(); 

기능은 실행되지만 먼저 경고를 실행하고 업데이트 된 값을 볼 수 없습니다. 대신, 기능 자체 경고를 놓아야합니다 : 값이 동일하게 유지되도록

f = function() { 
    var foo = 6; 
    somethingAsync(function() { 
    foo = 4; 
    alert(foo); 
    }); 
}; 
f(); 
+0

감사합니다,이 작동하지만 내부 함수는 아약스 콜백 경우 무엇입니까? – sajadkk

+0

@sajadkk 답변을 업데이트했습니다. –

+0

foo의 값이 6에서 4로 변경됩니까? – sajadkk

-2

당신은 내부 함수

f = function() { 
    var foo = 6; 
    return function() { 
    foo = 4; 
    alert(foo); 
    }; 
}; 
f()(); 
+0

이것이 함수를 "초기화하는"방법입니다. – thefourtheye

0
var f = function() { 
    var foo = 6; 
    function x() { 
    foo = 4; 
    }; 
    alert(foo); 
}; 
f(); 

당신은 X를 호출하지 않습니다!

관련 문제