我对编译器如何在内部解析此引用感兴趣。假设我们有这个代码:
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
块中。如果在执行代码时甚至没有分配原始消费者,那么对消费者的引用如何有效?我知道函数将范围推到顶部,但是对于分配给变量的函数表达式也是如此吗?
是否可以创建一个场景,其中函数通过分配给它的变量引用自己,并且该引用尚未有效?consumer
当该引用是尚未完成定义的函数的一部分时,javascript如何进行第二次引用来引用该函数?
这是否等同于递归中使用的引用?如果是这样,编译器如何评估它们是否有效?