Javascript 자체 실행 기능이 컴파일 된 프로그램처럼 작동합니까? 즉, 자체 실행 함수 내에서 명명 된 익명 함수 뒤에 함수를 선언하고 명명 된 익명 함수로 런타임에 다른 함수를 찾을 수 있습니까? 나는 왜 다음과 같은 일을합니까?Javascript 자체 실행 기능이 컴파일 된 프로그램처럼 작동합니까?
명명 된 익명 함수는 런타임 중에 만 만들어 지므로 자체 실행 함수는 코드를 "컴파일하여"명명 된 익명 함수를 호출하는 함수에서 사용할 수 있도록 만들 수 없다고 생각했습니다.
(function(){
var myFunc = function(){
var bar = "Bar";
return myFunc2() + bar;
}
function myFunc2(){
return "Foo ";
}
})()
또는 myFunc
가 호출되지 않기 때문에 myFunc2
가 호출되지 않기 때문에 특정 예는 작동도
(function(){
function myFunc(){
var bar = "Bar";
return myFunc2() + bar;
}
var myFunc2 = function(){
return "Foo ";
}
window.fooBar = myFunc();
})()
console.log(fooBar);
아니요. 특정 기능을 "찾을 수있는 기능"과 아무런 관련이 없습니다. 현재 범위의 익명이 아닌 함수는이 범위 내의 아무 곳에서나 찾을 수 있습니다. "익명으로 명명 된"함수는 나중에 정의 된 변수로 정의하기 때문에 "forward-located"될 수 없습니다. – devnull69
미래의 질문을 위해 함수 용어를 고려할 수 있습니다. 자체 실행 기능은 일반적으로 익명 함수라고하는 _ [즉시 호출 된 함수 식 (IIFE)] (http://benalman.com/news/2010/11/immediately-invoked-function-expression/) _이라고합니다. _function expressions_이라고하고, 익명이 아닌 함수는 _function 선언입니다. – Andy
@uws : 귀하의 진술과 논쟁 할 수 있습니다. 필자는 자체 실행 기능이 IIFE로 언급 된 것을 보았습니다. 그러나 이것은 정말로 잘못된 것입니다. 자체 실행 함수는 실제로 재귀이며 IIFE와는 아무런 관련이 없습니다. – sla55er