2

outerFunction で変数 "a" を定義します。innerFunction で使用したい。これが機能しないのはなぜですか?ネストされた関数間でデータを渡す最良の方法は何ですか?

var outerFunction = function () {
   var a = 5;
   innerFunction();
}


var innerFunction = function () {
   alert(a);
}

outerFunction();
4

5 に答える 5

4

パラメータを内部関数に追加し、外部関数から値を渡す必要があります。

ライブデモ

var outerFunction = function () {
   var a = 5;
   innerFunction(a);
}


var innerFunction = function (a) {
   alert(a);
}

outerFunction();
于 2012-10-24T18:31:20.337 に答える
2

innerFunctionouteFunctionから呼び出しているだけ の内部関数ではありませんouterFunction。内部関数は次のように定義する必要があります。

var outerFunction = function () {
   var a = 5;
   var innerFunction = function () {
    alert(a);
   }
   innerFunction();
}
于 2012-10-24T18:33:03.153 に答える
1

JavaScript では、関数はそのコンテキストにバインドされています。内部で定義された変数outerFunctionは、グローバルコンテキストではなく、そこにのみ存在することを意味します。しかし、機能についてinnerFunctionは、このスコープは利用できません。そのため、アクセスできません。必要な場合は、引数としてinnerFunction明示的に渡す必要があります。

于 2012-10-24T18:33:24.693 に答える
1

実際にそれらをネストするだけです:

var outerFunction = function () {

    var innerFunction = function () {
        alert(a);
    }

    var a = 5;
    innerFunction();
}

outerFunction();

innerFunctionのスコープ (alertがアクセスできる) は、outerFunctionwhereaが宣言されているスコープ内にあります。

于 2012-10-24T18:34:55.803 に答える
0

var は、変数のローカル スコープを定義します。変数を渡すつもりがない場合は、次のようにします。

var outerFunction = function () {
   a = 5;
   innerFunction();
}


var innerFunction = function () {
   alert(a);
}

outerFunction();

しかし、クリーンなアプローチは、変数を渡すことです

innerFunction(a)
于 2012-10-24T18:33:12.843 に答える