Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

巻き上げ(ホイスティング)

この記事は編集レビューを必要としています。ぜひご協力ください

JavaScriptでは、関数変数巻き上げ(ホイスティング)られます。巻き上げは、スコープ(グローバルスコープまたは現在の関数スコープ)の先頭に宣言を移動するJavaScriptの振る舞いです。

これは宣言の前に関数や変数を使えることを意味します。言い換えると、関数や変数は使われた後にも宣言することができます。

詳細情報

技術的な例

変数:

foo = 2
var foo;

// 暗黙的にこのように解釈される

var foo;
foo = 2;

関数:

hoisted(); // "foo" と出力

function hoisted() {
  console.log("foo");
}

 

変数宣言における例

以下の場合はグローバル変数が参照される。

var x = 0; 
function foo(){ 
  console.log(x); // 0 と出力 
} 
hoge();

変数宣言巻き上げの場合。グローバル変数xは参照されません。

var x = 0; 
function foo(){
  console.log(x); // undefined と出力
  var x = 1; // var x宣言が巻き上げられる
}
foo();

上記のコードは、内部で以下のコードの様に実行されています。

関数スコープ内で、変数宣言はスコープ内先頭部に巻き上げられます。

var x = 0; //参照されない
function foo(){
  var x; // foo関数スコープ内のxが参照され、値はundefinedとなります
  console.log(x); // undefined と出力
  x = 1;
}
foo();

技術リファレンス

ドキュメントのタグと貢献者

 このページの貢献者: keioka, hurumeki
 最終更新者: keioka,