1

次のコード

'use strict';

function blah() {

    if (1 ==21) {
    }
    else {
        var i = 10;
        function inner() {
            console.log(i);
        }
    }
}

次のエラーが発生します。

SyntaxError: 厳密モード コードでは、関数はトップ レベルで、または別の関数内ですぐに宣言できます。

変数 'i' にアクセスできるように関数 inner を作成するにはどうすればよいですか? 厳密モードによると、関数を一番上に移動する必要がありますが、この時点では「i」は宣言されていません

4

4 に答える 4

4

var iとにかく のスコープの一番上に持ち上げられるのでfunction blah、これを行うことができます:

'use strict';

function blah() {
    var i;
    function inner() {
        console.log(i);
    }

    if (1 ==21) {
    }
    else {
        i = 10;
    }
}​
于 2012-08-02T23:20:08.733 に答える
1

内部関数は、次のように関数式として宣言する必要があります。

var inner = function () {
    console.log(i);
};
于 2012-08-03T00:15:37.893 に答える
1

varブロックではなく、関数全体の変数を宣言するため、宣言されています。

于 2012-08-02T23:19:29.753 に答える