関数式の関数宣言の昇格

1635 ワード

関数宣言の昇格
この数日、再び紅宝書(JavaScript高級手順設計)を振り返ってみます.自分の前に読んだのは乱暴だと思います.だから、これらの整理したノートを書いてください.間違いがあれば、すぐに教えてください.ありがとうございます.
関数を定義する二つの方法
1、関数宣言
function helloWorld(arg1,arg2){
    ....
}
2、関数式
var helloWorld = function(arg1,arg2){
    ...
}
関数宣言アップグレード(function declaration hoisting)
紅宝書にはこう書かれています.
関数の昇格については、重要な特徴の一つは、関数宣言の昇格です.コードを実行する前に関数宣言を先に読み込むという意味です.
この文の意味の説明は先に方法を呼び出してから声明してもいいです.間違いが発生することはありません.
helloWorld();
function helloWorld(){
    alert("helloWorld");
}
Googleのブラウザは直接F 12を押してコンソールに上のコードを入力することができます.ハロルドが出力されました.この説明はまずハロルドを呼び出したように見えますが、関数宣言の向上により、実行時の関数宣言が優先的に読み取られました.
しかし、関数式の方法ではだめです.
helloWorld();
var helloWorld = function(){
    alert("helloWorld");
}
運転中にUncaght Type Errorをエラー出力します.hello World is not a functionは呼び出し時にまだ定義が宣言されていません.これは関数宣言と関数表現の違いです.
PS:コンソールテストの関数表現を見つけたら、コンソールがハローワールドを出力しました.コンソールを空にしてから実行したらエラーが発生します.私の個人的な見積もりはコンソールにキャッシュが保存されています.前の関数宣言が実行された後、式を実行する時に出力できます.
これらを書くのは自分の勉強した知識を整理してあげたいです.あなたに役立つなら、最高です.