본문 바로가기
Internship

scope와 closures

by Doromi 2019. 5. 4.
728x90
반응형

유효범위(scope)


어떤 변수들에 접근할 수 있는지를 정의한다.

종류

  • 전역 스코프 (global scope)
    변수가 함수 바깥이나 중괄호 바깥에 선언되었다면, 전역 스코프에 정의된다.

    전역 변수로 선언하면, 모든 곳에서 해당 변수를 사용할 수 있다.

 

  • 지역 스코프 (local scope)
    특정부분에서만 사용할 수 있는 변수는 지역 스코프에 있다.
    지역 변수라고 부른다.


 

 


 

 

 

클로저(closures)

내부함수가 외부함수의 맥락(context)에 접근할 수 있는 것을 가르킨다.


function outter(){
	var title = 'yes';
	
    function inner(){
    	alert(title);
    }
    
    inner();
}


outter();
       

 

outter라는 외부함수 안에 inner라는 내부함수가 정의 되어 있다.

내부함수는 외부함수의 지역변수에 접근할 수 있다.

 

 

 

function outter(){
	var title = 'yes';
    
    return function(){
    	alert(title);
	}
var inner = outter();

inner();

 

inner에는 이름 없는 함수가 담겨있다.
outter 함수는 실행이 끝났기 때문에 소멸되는 것이 자연스럽다.


하지만 inner함수를 실행했을 때 클로저로 인해 내부함수가 외부함수의 지역변수에 접근 할 수 있고,
외부함수는 외부함수의 지역변수를 사용하는 내부함수가 소멸될 때까지 소멸되지 않는 특성을 의미한다.

 

 

728x90
반응형

'Internship' 카테고리의 다른 글

this  (0) 2019.05.04
var vs let  (0) 2019.05.04
프로미스  (0) 2019.05.04
디자인 패턴  (0) 2019.05.04
싱글턴 패턴(Singleton Pattern)  (0) 2019.04.24