Dog foot print

[javascript] 클로저 본문

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();

 

객체로 반환되며 메서드로써 외부 변수를 참조 할 수 있다. 

반응형

'Javascript' 카테고리의 다른 글

[javascript] Stack 구현하기  (0) 2019.07.07
[javascript] Date객체의 사용  (0) 2019.07.06
[javascript] Document 객체  (0) 2019.07.04
[javascript] 동기와 비동기  (0) 2019.07.02
[javascript] 콜백 함수란 ?  (0) 2019.07.02
Comments