0
http://javascriptissexy.com/understand-javascript-closures-with-ease/の最後の例は次のとおりです。理解例
function celebrityIDCreator (theCelebrities) {
var i;
var uniqueID = 100;
for (i = 0; i < theCelebrities.length; i++) {
theCelebrities[i]["id"] = function (j) { // the j parametric variable is the i passed in on invocation of this IIFE
return function() {
return uniqueID + j; // each iteration of the for loop passes the current value of i into this IIFE and it saves the correct value to the array
}() // BY adding() at the end of this function, we are executing it immediately and returning just the value of uniqueID + j, instead of returning a function.
} (i); // immediately invoke the function passing the i variable as a parameter
}
return theCelebrities;
};
var actionCelebs = [{name:"Stallone", id:0}, {name:"Cruise", id:0}, {name:"Willis", id:0}];
var createIdForActionCelebs = celebrityIDCreator (actionCelebs);
var stalloneID = createIdForActionCelebs[0];
console.log(stalloneID.id); // 100
console.log(createIdForActionCelebs[1].id); // 101
生命維持がここで必要な理由、私は同じ結果と
celebrityIDCreator
を交換し、生産、私は理解していない
:
をvar celebrityIDCreator = function(theCelebrities) {
var i;
var uniqueID = 100;
for (i = 0; i < theCelebrities.length; i++) {
theCelebrities[i]["id"] = function (j) {
return uniqueID + j;
// return function() {
// }() ;
} (i);
}
return theCelebrities;
};
一部の人がこれを説明できますか?私は何かが欠けていますか?
また、 'for(let i'と書いてあれば、これ以上の最新の本を見つけることはできません。 –