본문 바로가기

언어/javascript

javascript : 클로저

반응형
function test(name){
    var output = 'Hello' + name +' ..!';
}

console(output);

위와 같은 코드는 실행되지 않는다... (근데 var는 전역이라고 햇던것 같은데..? 알아보니 일반 스코프와 함수 스코프는 느낌이 다른듯하다.)

var는 함수가 호출될시 생성되고 호출이 끝난후 사라진다.

 

 

function test(name){
    var output = 'Hello' + name + '...!';
    return function(){
        console.log(output);
    };
}

test('JavaScript')();

위에는 var에 있는 값을 접근 할 수 있다.  test('Javascript') 가 함수자체라면 () <- 뒤에 함수호출로 인해서 함수자체를 부를 수있게되는것..

 

지역변수는 함수가 실행될때 생성되고 함수가 종룔될 때 사라지지만 클로저를 사용하면 이규칙을 위반할 수 있는 것

 

클로저의 정의는 워낙 다양하다. 이렇게 지역 변수를 남겨두는 현상을 클로저라고 부르기도 하고 , 함수 test() 내부의 변수들이 살아있는 것이므로 test() 함수로 생성된 공간을 클로저라고 부르기도 합니다.

 

function test(name) {
    var output = 'Hello' + name + '...!';
    return function () {
        console.log(output);
    }
}

var test_1 = test('Web');
var test_2 = test('JavaScript');

test_1();
test_2();
HelloWeb...!
HelloJavaScript...!

 

반응형

'언어 > javascript' 카테고리의 다른 글

javascript : 인코딩과 디코딩 함수  (0) 2020.11.29
javascript : 타이머 함수  (0) 2020.11.29
javascript : callback 함수  (0) 2020.11.29
javascript : arguments  (0) 2020.11.29
javascript : array  (0) 2020.11.29