次のスクリプトを実行すると、アラート ステートメントが関数を出力するのはなぜですか? 実行コンテキストで何が起こるか? 変数 basicPattern の未定義の値が出力されないのはなぜですか?
function basicPattern(){
var o = 5;
return o;
}
var basicPattern;
console.log(basicPattern);
次のスクリプトを実行すると、アラート ステートメントが関数を出力するのはなぜですか? 実行コンテキストで何が起こるか? 変数 basicPattern の未定義の値が出力されないのはなぜですか?
function basicPattern(){
var o = 5;
return o;
}
var basicPattern;
console.log(basicPattern);
function basicPattern(){
var o = 5;
return o;
}
var basicPattern;
console.log(basicPattern);
これと同じように評価します (IE のバグは無視されます):
var basicPattern;
basicPattern = function basicPattern(){
var o = 5;
return o;
};
console.log(basicPattern);
はすでに宣言されているためbasicPattern
、宣言が巻き上げられてマージされるため、再度宣言しても効果はありません。割り当てがある場合は5
、次のようになります。
var basicPattern;
basicPattern = function basicPattern(){
var o = 5;
return o;
};
basicPattern = 5;
console.log(basicPattern);
巻き上げについて詳しく読む: http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting