필자는 내부 참조에서이 참조를 컴파일러가 해결하는 방법에 관심이 있습니다. 우리가이 코드를 가지고 말 :JavaScript가이 참조를 어떻게 해결합니까?
function makeConsumer(run_priority,run_object) {
var consumer = function(last_run_action) {
if(!!last_run_action) {
// do something
} else {
var next_to_load = run_priority.shift();
next_to_load.consume = consumer;
run_load_script(next_to_load,run_object);
}
};
return consumer;
}
가 상단에 consumer
에 대한 참조이며, 함수가 정의되고 완료하기 전에 다음, consumer
또 다른 참조가 최종 else
블록에서 발생합니다. 원래 소비자가 코드가 실행되는 시점에 할당되지 않은 경우에도 소비자에 대한이 참조는 어떻게 유효합니까? 나는 함수가 범위를 맨 위로 밀어 넣는다는 것을 이해하지만 변수에 할당 된 함수 표현식에 대해서도 마찬가지입니까?
함수가 할당 된 변수를 통해 자체 참조하고 해당 참조가 아직 유효하지 않은 시나리오를 만들 수 있습니까? javacript가 consumer
에 대한 두 번째 참조를 작성하는 방법은 해당 참조가 아직 정의되지 않은 함수의 일부일 때 함수를 참조합니까?
이것은 재귀에 사용되는 참조와 동일합니까? 그리고 만약 그렇다면, 어떻게 그들은 컴파일러에 의해 평가되는 유효합니까?