Scope & Closure

Judo·2020년 11월 8일
0
post-thumbnail

Scope

  • 변수 접근 규칙에 따른 유효 범위

  • 변수와 그 값이 어디서부터 어디까지 유효한지를 판단하는 범위

  • JS는 기본적으로, 함수가 선언되는(lexical) 동시에 자신만의 Scope를 가짐.

  • 지역변수는 전역변수보다 우선순위가 높다.

  • 매개변수가 없는 함수 호출 시 -> 인자를 포함해 함수를 호출한다면 인자는 쓰이지 못
    하고 함수만 호출됨.

  • 전역변수가 선언되어있고 함수안에서 선언없이 전역변수와 동일한 변수에 값이 할당되고 있다면 함수안에 있는 변수는 전역변수로 여겨진다.

  • 스코프가 위계적으로 겹쳐져있는 경우, 안쪽 스코프부터 바깥쪽 스코프로 스코프 체이닝이 일어남.

let message = "outer" 
function shadowParameter(message) { 
	message = 'Do not use parameters like this!'; 
    	return message;
} 
/* --> shadowParameter('parameter') 호출 시 
전역변수 message를 사용하는게 아니라 인자로 들어간 'parameter'를 사용함 */

Closure

  • 외부 함수의 변수에 접근할 수 있는 내부 함수 또는, 이러한 작동 원리를 일컫는 용어

  • 클로저 함수안에서는 지역 변수,외부 함수의 변수, 전역 변수의 접근이 전부 가능함.

  • 커링

    • 함수 하나가 n개의 인자를 받는 대신, n개의 함수를 만들어 각각 인자를 받게 하는 방법
  • 클로저 모듈 패턴

    • 변수를 스코프 안쪽에 가두어 함수 밖으로 노출시키지 않는 방법
    • 자바 캡슐화 방법과 비슷한거 같음.

전역변수와 window 객체

  • 전역 범위를 대표하는 객체

  • Global Scope에서 선언된 함수, var키워드를 이용해 선언된 변수는 window 객체와 연결

  • 전역 범위에 너무 많은 변수를 선언하지 않기

profile
즐거운 코딩

0개의 댓글