2013-04-08 2 views
0

그냥 클로저를 배우기 시작하고 방화범이 코드를 작성하는 기능 범위 밖에서 작동하지 않습니다. 이 "Inside Outer" ?폐쇄는

+2

.. 그냥 한 번이 ... 그것은 좋은 것 같다 로그 : http://jsfiddle.net/sMuNV/. 'console.log'는 아무것도 반환하지 않으며 함수는 아무것도 반환하지 않습니다. 정말로 "돌아오다"라고 말하고 싶습니까? – Ian

+1

['Status : no-repro'] (http://jsfiddle.net/ccjAB/) –

+4

Chrome의 웹 검사기에서 실행하면 "Inside Inside"가됩니다 (질문에 대답하기 위해 올바른 동작). 반환 값이없고 마지막 표현식이 아무 것도 평가하지 않기 때문에 전체 표현식의 결과는'undefined '입니다. "Inner Outer"도 인쇄되지 않았습니까? – jmar777

답변

1
var later; 

function outerFunc() { 
    var innerVar = "Inside Outer"; 
    function innerFunc() { 
    console.log(innerVar); 
    } 

    later = innerFunc; 
}; 

outerFunc(); //Don't run innerFunc, just set later = innerFunc 
later(); // Execute innerFunc 

을 인쇄 안 그래서 그것은 나를 위해하는

+0

잘 두 번 인쇄하지 말아야합니까? outerFunc를 호출 할 때 한 번 ... 나중에() 호출 할 때 한 번? –

+2

@ user1899082 아니야, 왜냐하면 ** outerFunc()를 호출 할 때 ** ** ** ** ** **에 ** innerFunc ** 함수의 이름 만 지정하기 때문에 그게 전부가 아닙니다. 두 번 호출하고 싶다면 *** 대신 later = innerFunc; *** do so *** later = innerFunc(); *** – Givi

관련 문제