最終更新:2018-01-08 (月) 06:01:55 (2301d)  

巻き上げ
Top / 巻き上げ

ホイスティング

JavaScript

JavaScript/var

  • varによる変数宣言は、暗黙的に宣言部分がもっと近い関数またはグローバルスコープの先頭に巻き上げられ、代入部分はそのままの位置に残るという特殊な動作をします。
  • 巻き上げはブロックスコープを無視してもっと近い関数スコープ?またはグローバルスコープ?に変数を紐付けます。

JavaScript/function文

  • function文?もvarと同様にもっと近い関数またはグローバルスコープの先頭に巻き上げされます。
  • JavaScript/関数式も巻き上げられるので注意が必要。
    // `hello`変数は巻き上げされ、暗黙的に`undefined`となる
    hello(); // => TypeError: hello is not a function
    
    // `hello`変数へ関数を代入している
    var hello = function(){
        return "Hello";
    };

参考