我对在for循环中使用IIFE和使用普通函数调用(带参数)感到困惑。
function print_doc_count(i){
var str= "collection" + i.toString();
db.collection(str).count(function(err, res){
if(!err){
console.log("docs in collection: "+str+" = "+res);
}
});
}
for(var i=1; i<=10; i++){
print_doc_count(i);
}
示例2(使用IIFE)-
for(var i=1; i<=10; i++){
(function print_doc_count(i){
var str= "collection" + i.toString();
db.collection(str).count(function(err, res){
if(!err){
console.log("docs in collection: "+str+" = "+res);
// str needed closure, it contains the value i!
}
});
})(i);
}
我的问题是,上面的示例1和示例2之间的区别是什么?在什么情况下,一个应该优先于另一个?