内部で、コンパイラがこの参照をどのように解決するかに興味があります。このコードがあるとしましょう:
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
コードの実行時に元のコンシューマーが割り当てられていない場合、このコンシューマーへの参照はどのように有効ですか?関数がスコープを一番上にプッシュすることは理解していますが、これは変数に割り当てられた関数式にも当てはまりますか?
関数が割り当てられた変数を介してそれ自体を参照し、その参照がまだ有効でないシナリオを作成することは可能ですか?その参照が定義されていない関数の一部である場合、 javascriptはどのようconsumer
にして関数を参照する2番目の参照を作成しますか?
これは、再帰で使用される参照と同等ですか?もしそうなら、それらはコンパイラによってどのように有効であると評価されますか?