这是一个简短的 Angular 应用程序:
angular.module('AppName', [])
.controller('TwoController', function($scope){
var oneArray = ['1','2'];
$scope.secondArray = [];
for (i in oneArray){
$scope.secondArray.push({
property: function(){
console.log('1');
return 'word';
}
})
}
});
在我看来:
<div ng-app="AppName" ng-controller="TwoController">
<p ng-repeat='entry in secondArray'>{{entry.property()}}</p>
</div>
它正确地显示字符串 word
两次,但是当我检查控制台时,它显示函数执行了 4 次(通过 console.log('1')
) .知道为什么吗?
最佳答案
这是因为for..in
属性和数组上的循环具有属性 length
还有另一个让它再次循环。如果你想看它就做 console.log(i)
要么使用 angular.forEach
还是旧的for(var i = 0; i < ...)
编辑:失败的答案:原因是 Angular 问题。
他将遍历列表两次:一次在初始化时,一次在循环结束时检查更改
关于javascript - 函数执行次数超过预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36690747/