Closure
내부함수
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function celebrityIDCreator(theCelebrities) { var i; var uniqueID = 100; for (i = 0; i < theCelebrities.length; i++) { theCelebrities[i][ "id" ] = function () { return uniqueID + i; } } 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()); var cruiseID = createIdForActionCelebs[1]; console.log(cruiseID.id()); var willisID = createIdForActionCelebs[2]; console.log(willisID.id()); |
1 2 3 | 103 103 103 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function celebrityIDCreator(theCelebrities) { var i; var uniqueID = 100; for (i = 0; i < theCelebrities.length; i++) { theCelebrities[i][ "id" ] = function (j) { return function () { return uniqueID + j; }() }(i); } 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); var cruiseID = createIdForActionCelebs[1]; console.log(cruiseID.id); var willisID = createIdForActionCelebs[2]; console.log(willisID.id); |
1 2 3 | 100 101 102 |