728x90
반응형
자유변수
함수의 지역범위에서 정의되지 않은 변수
let hi = "안녕";
(function(name){
let word = hi + ", "+name;
let greet = "반가워 :)";
let say = word + '\n' + greet;
alert(say);
})('철수');
//name, word, greet, say 지역변수
//hi 자유변수
내부함수
함수 안에서 또 다른 함수를 선언하는 것
function outter(){
function inner(){
var title = 'javascript';
alert(title);
}
inner(); //내부함수
}
outter(); //외부함수
클로저 함수
자유변수를 가지고 있는 함수
클로저(closure)는 내부함수가 외부함수의 맥락(context)에 접근할 수 있는 것을 가르킴
클로져함수는 참조하는 환경을 가진 함수 - 참조하는 환경을 가지고 외부로부터 닫혀있음
//함수 외부의 컨텍스트에 접근 X
let arr = []
for(var i = 0; i < 5; i++){
arr[i] = function(){
return i;
}
}
for(let index in arr) {
console.log(arr[index]());
} //5 5 5 5 5
//함수가 외부의 컨텍스트에 접근 O
let arr = []
for(let i = 0; i < 5; i++){
arr[i] = function(id) {
return function(){
return id;
}
}(i);
}
for(let index in arr) {
console.log(arr[index]());
} //0 1 2 3 4
반응형
'프로그래밍 > JavaScript' 카테고리의 다른 글
07.21(Window 객체, BOM, DOM ) (0) | 2020.07.21 |
---|---|
07.20(객체) (0) | 2020.07.20 |
07.16(함수) (0) | 2020.07.16 |
07.15(형변환) (0) | 2020.07.15 |
07.14(Array 메소드) (0) | 2020.07.14 |