<分区>
以下程序以意外方式执行。这是为什么?基于闭包返回对 i 的引用而不是 i 的值这一事实,我有一些模糊的理解。由于最后 i 的值为 3,因此它将在所有地方应用这些值。
function idCreator (peopleList) {
var i;
var uniqueID = 100;
for (i = 0; i < peopleList.length; i++) {
peopleList[i]["id"] = function () {
return uniqueID + i;
}
}
return peopleList;
}
var myFriends = [{name:"ABC", id:0}, {name:"PQR", id:0}, {name:"XYZ", id:0}];
var createIdForMyFriends = idCreator (myFriends);
var abcID = myFriends [0];
console.log(abcID.id()); // 103