어떻게 호출하는 창입니다.init 에서는 글로벌 init 기능을 일으키지 않는 무한 재귀?

StackOverflow https://stackoverflow.com//questions/21013357

문제

그래서,어떻게 이 코드가 없는 무한 루프?

window.init = function(){
    console.log("window.init")
}

function init(){
    console.log("init")
    window.init();
}

init();

jsfiddle: http://jsfiddle.net/FAt6C/

도움이 되었습니까?

해결책

귀하의 코드를 실행하도록 설정에서 부하십시오(상단 왼쪽),이는 기본적으로 알려줍 jsFiddle 을 감싸는 이 함수 코드에서는 다음 설정으로 onload 처리기입니다. function init() 실제로 선언의 범위에서는 이벤트를 처리기지 않습니다.

지 않을 때 당신은 포장 코드,하지만,함수의 선언은 기본적으로 실행 설정의 일환으로 현재 범위기 전에 다른 재료에서는 범위(ECMA-262,§10.5).그래서 init 에 이미 존재하기 전에 당신은 말 window.init =..., 고는 할당 문을 덮어쓰고 깨 init.의미를 설정하는 경우 포장을"아 포장"(위치에 관계없이),볼만 해야"창을 엽니다.init"니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top