我被骗以为我必须在$scope
(或在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);
}