0

イテレータ内でローカル変数にアクセスするには、 $scope(または関数内にある)ローカル変数を定義する必要があると思い込んでしまいました。ステートメントでは、配列への参照がない場合、配列にアクセスできません。しかし、2 番目のデバッグ ステートメントのコメントを外すとすぐに、アクセス可能になります。this$scopedebuggernamesnames

names宣言した後にのみアクセス可能になるのはなぜですか? デバッグ時にこれを回避する方法はありますか?

$scope.test = function() {
  var greeting = 'hello';
  var names = ['alice', 'bob', 'cathy'];
  var fruit = ['apple', 'banana', 'cherry'];

  angular.forEach(fruit, function(item, index) {
    debugger;                                    // greeting is on the closure; names is not
    console.debug(greeting + item);
    // console.debug(greeting + names[index]);   // if enabled, suddenly names is now on the closure also
  }, this);
}
4

0 に答える 0