언어/javascript

javascript : 클로저

하이후에호 2020. 11. 29. 18:29
반응형
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...!

 

반응형