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


References

  1. http://chanlee.github.io/2013/12/10/understand-javascript-closure/