b();
console.log(a);
var a = 'Hello World';
function b(){
console.log('Called b!');
}
「ホイスト」という用語について読んだことがありますが、よくわかりません。変数が未定義に設定されているときに関数が実行されるのはなぜですか?
興味深いのは、変数にエラーが表示されなかったことです。しかし、それは未定義を示しました。しかし、変数を完全に削除すると、エラーが表示されます。つまり、変数はどこかに存在します。右?
しかし、それが存在する場合、なぜコンパイラはそれをコンパイルできず、ここで関数をコンパイルできないのでしょうか?
var a が巻き上げられていることはわかっています。エンジンが変数と関数を別の方法で処理している理由、つまり実行コンテキスト中に舞台裏で起こっていることを知りたいです。
エンジンが実行コンテキストを作成する方法についての詳細な説明は役に立ちます。
この質問では、javascript エンジンが関数と変数でどのように異なる動作をするかについて質問しています。そして、実行フェーズの作成状態と実行状態で正確に何が起こっているのか。したがって、重複した質問ではありません。