1

次のスクリプトを実行すると、アラート ステートメントが関数を出力するのはなぜですか? 実行コンテキストで何が起こるか? 変数 basicPattern の未定義の値が出力されないのはなぜですか?

 function basicPattern(){
    var o = 5;

    return o;
 }

 var basicPattern;
 console.log(basicPattern);
4

1 に答える 1

2
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

于 2012-07-01T13:04:47.493 に答える