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