我再次問這個問題,因爲用戶Cerbrus已將previous question標記爲this question的副本。 有人可以這麼友好地告訴我這個用戶指出的問題應該如何解決下面的代碼?我找不到這些情況之間的匹配(即使認爲它們是相似的)。jQuery:將變量傳遞給循環中聲明的函數[競爭重複]
我需要將一個變量傳遞給for循環中的函數。這裏有一個例子:
var mainObj = [],
subArr = ['val1', 'val2'],
tmp;
for (var i = 0; i < subArr.length; i++) {
tmp = subArr[i];
mainObj.push({
key: function(varsFromLibrary) {
myFunc(tmp);
}
});
}
在這裏,我有2個問題:
- 爲什麼我必須分配給
subArr[i]
tmp
?使用myFunc(subArr[i])
會返回i
未定義? - 爲什麼在
myFunc
我只收到subArr
數組的最後一個值?
UPDATE
我已經更新的代碼如下,但我得到TypeError: funcs[j] is not a function
var mainObj = [],
subArr = ['val1', 'val2'],
tmp,
funcs = [];
function createfunc(i) {
return function() { console.log("My value: " + i); };
}
for (var i = 0; i < subArr.length; i++) {
funcs[i] = createfunc(subArr[i]);
}
for (var j = 0; j < subArr.length; j++) {
tmp = subArr[i];
mainObj.push({
key: function(varsFromLibrary) {
funcs[j]();
}
});
}
非常感謝喬納斯,非常詳盡!希望我從一開始就得到您真正有用的答覆! :) – Mark