학습목표 정리

[JS/Node] 핵심 개념과 주요 문법 Chapter - 스코프, 클로저

he2mo 2021. 8. 30. 17:23

스코프

  • 스코프의 의미와 적용 범위를 이해할 수 있다

 

스코프를 쉽게 말하면 변수에 접근할 수 있는 유효범위라고 할 수 있다. 변수가 선언된 위치와 방식에 따라 그 변수를 사용할 수 있는 범위가 정해져 있다.

 

  • 스코프의 주요 규칙을 이해할 수 있다

 

스코프는 크게 나누면 전역 스코프와 지역 스코프로 나눌 수 있으며 전역 스코프는 스크립트 전체를 뜻하고 지역 스코프는 전역 스코프 내의 일정 구역을 뜻한다.

block scope는 중괄호를 사용해서 구역을 나눈 것이고 function scope는 함수의 영역이다. 예외로 화살표 함수로 둘러싼 스코프는 block scope로 취급된다. 

 

자바스크립트에서 변수를 선언하는 방법에는 var, let, const 가 있다.

var는 전역 변수로 사용되고 let은 지역 변수로 사용 된다. var와 달리 let은 변수가 선언된 블록, 구문 또는 표현식 내에서면 유효하게 사용 될 수 있다. const는 블록범위의 상수를 선언할 때 사용하며 let 과 같은 스코프를 가진다. let과는 다르게 const는 재할당을 할 수 없고 처음 선언할 때 반드시 초기화를 해야한다.

 

for (let i = 0; i < 5; i++) {
    console.log(i); // 1 2 3 4 5
}
console.log(i); // ReferenceError

 

for (var i = 0; i < 5; i++) {
    console.log(i); // 1 2 3 4 5
}
console.log(i); // 5

 

브라우저에는 window 객체가 존재한다. var로 선언된 전역 변수는 window객체에 속하게 된다. 여러사람이 같이 작업하면서 같은 이름으로 전역 변수를 선언하게 되면 문제가 발생할 수 있기 때문에(side effect) 전역 변수는 최소화 하는 게 좋다.

 

 

클로저

 

  • 클로저 함수의 정의와 특징에 대해서 이해할 수 있다

 

클로저의 mdn 정의를 살펴보면, 함수와 함수가 선언된 어휘적 환경의 조합이다. 이 말은 함수가 선언된 위치에 따라 함수의 역할이 달라질 수 있다는 뜻이다. 

 

  • 클로저가 갖는 스코프 범위를 이해할 수 있다

 

클로저 함수는 함수가 선언된 환경을 기억하고 있기 때문에 지역 스코프에서 정의된 함수를 전역 스코프에서 호출하면 함수내에서는 지역 변수에 접근할 수 있다.

 

 

  • 클로저를 이용해 유용하게 쓰이는 몇 가지 코딩 패턴을 이해할 수 있다