변수 접근 규칙에 따른 유효 범위
변수와 그 값이 어디서부터 어디까지 유효한지를 판단하는 범위
JS는 기본적으로, 함수가 선언되는(lexical) 동시에 자신만의 Scope를 가짐.
지역변수는 전역변수보다 우선순위가 높다.
매개변수가 없는 함수 호출 시 -> 인자를 포함해 함수를 호출한다면 인자는 쓰이지 못
하고 함수만 호출됨.
전역변수가 선언되어있고 함수안에서 선언없이 전역변수와 동일한 변수에 값이 할당되고 있다면 함수안에 있는 변수는 전역변수로 여겨진다.
스코프가 위계적으로 겹쳐져있는 경우, 안쪽 스코프부터 바깥쪽 스코프로 스코프 체이닝이 일어남.
let message = "outer"
function shadowParameter(message) {
message = 'Do not use parameters like this!';
return message;
}
/* --> shadowParameter('parameter') 호출 시
전역변수 message를 사용하는게 아니라 인자로 들어간 'parameter'를 사용함 */
외부 함수의 변수에 접근할 수 있는 내부 함수 또는, 이러한 작동 원리를 일컫는 용어
클로저 함수안에서는 지역 변수,외부 함수의 변수, 전역 변수의 접근이 전부 가능함.
커링
클로저 모듈 패턴
전역 범위를 대표하는 객체
Global Scope에서 선언된 함수, var키워드를 이용해 선언된 변수는 window 객체와 연결
전역 범위에 너무 많은 변수를 선언하지 않기