반응형
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 |