스코프(Scope)

Bin2·2022년 5월 23일
0

1. 스코프란?

  • 스코프란 변수에 접근할 수 있는 범위이다.
  • 범위는 블록(반복문, 조건문 등의 중괄호) 또는 함수에 의해 나눠진다.
  • 따라서 이를 각각 블록 스코프, 함수 스코프라고 부른다.

2. 스코프의 구분

  • 전역 스코프: 전역에 선언되어 어느 곳에서든지 해당 변수에 접근할 수 있다.
  • 지역 스코프: 전역이 아닌 다른 스코프는 모두 지역 스코프이다.

모든 변수는 선언된 위치에 의해 스코프를 갖게된다.
전역에서 선언된 변수는 전역 스코프이고, 지역(함수, 반복문, 조건문 등)에서 선언된 변수는 지역 스코프를 갖는다.

3. 스코프의 특징

  • 스코프는 중첩이 가능하다.
  • 안쪽 스코프에서 바깥쪽 스코프로 접근할 수 있지만 반대는 불가능하다.
  • 지역 변수는 전역 변수보다 더 높은 우선순위를 가진다.
  • Arrow function은 함수 스코프가 아닌, 블록 스코프이다.

4. 블록 스코프에서의 var

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

console.log(i) // ReferenceError

블록 스코프 안에서 let으로 선언된 변수 i는 블록 범위를 벗어나면 접근할 수 없다.

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

console.log(i) // 5

하지만 var로 선언된 변수는 블록 밖에서도 접근할 수 있다.
var 를 사용하여 선언된 변수는 함수 스코프만 따르기 때문이다. (화살표 함수 제외)

전역 변수의 사용은 변수 이름이 중복될 수 있고, 의도치 않은 재할당에 의한 상태 변화로 코드를 예측하기 어렵게 만드므로 사용을 억제해야 한다.
또한 변수를 var로 선언하기 보다는, const 와 let 을 사용하는게 권장된다.

profile
Developer

0개의 댓글