我已經看到循環內部的匿名函數在一兩處引發網絡新的範圍,並想知道它是否有意義。在javascript for循環中使用匿名函數
例如:
var attr, colors = ['green','blue','red'];
for (attr = 0; attr < colors.length; attr++) {
(function() {
var colorAttr = colors[attr];
// do something with colorAttr
})();
}
我理解它是與保持內部的for循環的清潔範圍,但在什麼情況下會變成這樣有必要嗎?在任何需要在for循環內聲明新var的地方進行此操作是否是一種好的做法?
這裏是一個閉環循環有意義的例子:http://stackoverflow.com/questions/1552941/variables-in-anonymous-functions-can-someone-explain-the-following –
'attr'隨着循環進行,所以如果你在回調函數中使用'colors [attr]',它將不會引用你實際需要的'colors [attr]'。 – Blender
僅在等待某件事完成時才使用異步呼叫。在這種情況下,追蹤'colors []'變化可能會有問題。 – mkey