0

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

0 回答 0