function makeFunc() {
var name = "Mozilla";
function displayName() { //외부변수를 참조하는 내부함수, 클로저
alert(name);
}
return displayName;
}
var myFunc = makeFunc();
//myFunc변수에 displayName을 리턴함
//유효범위의 어휘적 환경을 유지
myFunc();
//리턴된 displayName 함수를 실행(name 변수에 접근)
var arr = []
for(var i = 0; i < 5; i++){
arr[i] = function(){
return i;
}
}
for(var index in arr) {
console.log(arr[index]());
}
var arr = []
for(var i = 0; i < 5; i++){
arr[i] = function(id) {
return function(){
return id;
}
}(i);
}
for(var index in arr) {
console.log(arr[index]());
}
let arr = []
for(let i = 0; i < 5; i++){
arr[i] = function(){
return i;
}
}
for(let index in arr) {
console.log(arr[index]());
}
var 밖에 없을 당시에 만들어진 코드가 있고
var 밖에 쓸 수 없는 환경도 있기 때문이다. (...)