私はいつも、ブラウザーは JavaScript コードを文字列ごとに上から下に実行すると考えてきました (スクリプト言語からこの動作を期待するようなものです)。しかし、明らかにそうではありません:
//完璧に動作します
<script>
test();
function test() { alert('test'); }
</script>
しかし、関数を変数として宣言すると、「Uncaught ReferenceError: test is not defined」で失敗します:
<script>
test();
var test = function() { alert('test'); }
</script>
そのため、JavaScript エンジンはコードを上から下に実行しない場合があります。最後に宣言されていても、関数をプリロードできます。それはどのように正確に機能し、その理由は何ですか?