Javascript
[javascript] 클로저
개 발자국
2019. 7. 5. 20:14
클로저는 외부함수의 변수를 내부함수로 접근 하여 사용 하는 것입니다.
사실 객체의 캡슐화와 별 다른 것은 없습니다. 클래스의 멤버변수를 함수로 접근 하듯 클로저 또한 함수내부에 있는 함수로 접근 하는 것입니다.
스코프
자바스크립트 스코프는 2개의 스포크가 있습니다. 바로 함수스코프와 블록스코프입니다.
함수 스코프 : 함수 내부에서 만들어진 변수는 함수외부에서 접근 할 수 없고 함수 외부에서 const 와 let으로 작성되었다고 해도 함수 내부에서 새롭게 정의가 가능하고 이 변수들은 함수 내부에서만 작동이 가능하게 된다.
블록스코프 : {} 내부에서 만들어진 변수는 이 블록 내부에서만 유효하고 블록을 제외한 다른 곳에서는 접근이 불가능 하다.
클로저 사용하기
function good(){
let hello = "say hello";
function say (){
console.log(hello);
}
return say();
}
good()
내부함수인 say가 외부 함수 내부에 있는 hello 변수를 참조한다.
function human(name){
let sex = "man";
return {
sex : function(){
return console.log(sex);
},
age : 1,
name : name
}
}
man("lee").sex();
객체로 반환되며 메서드로써 외부 변수를 참조 할 수 있다.
반응형