JS - Scope

Dongs·2023년 3월 7일
0

HTML, CSS, JavaScript

목록 보기
7/12

Scope란?

  • JavaScript에서 Scope(스코프)란? 변수와 함수 등의 식별자(identifier)가 유효한 범위를 의미한다. 즉, 스코프는 변수와 함수를 참조할 수 있는 범위를 결정하는 것이다.

Scope의 종류?

JavaScript에서는 스코프의 종류로 크게 두 가지, 번외로 한 가지가 있다.

1. 전역 스코프(Global Scope)

전역 스코프는 함수 바깥에서 선언된 변수나 함수들의 스코프를 말한다. 전역 스코프에 선언된 변수나 함수는 어디서든지 참조할 수 있다. 하지만, 전역 스코프에서 선언된 변수나 함수는 다른 함수에서도 쉽게 접근할 수 있기 때문에 변수명이나 함수명이 중복되어 충돌할 수 있는 이슈가 생길 수 있다.

2. 지역 스코프(Local Scope)

지역 스코프는 함수 내부에서 선언된 변수나 함수들의 스코프를 말한다. 함수 내부에서 선언된 변수나 함수는 해당 함수 내부에서만 참조할 수 있으며, 함수 외부에서는 접근할 수 없다. 이러한 특징 때문에 지역 스코프에서 선언된 변수나 함수는 다른 함수나 전역 스코프에서 선언된 변수나 함수와 충돌할 위험이 적다.

3. 블록 스코프(Block-level Scope)

블록 레벨 스코프(Block-level Scope)는 변수나 상수 등의 식별자가 유효한 범위를 블록 내부로 제한하는 스코프이다다. 블록 레벨 스코프는 블록 내부에서 선언된 변수나 상수가 해당 블록 내부에서만 유효하고, 블록 외부에서는 접근할 수 없다..

예를 들어, for문의 블록 내부에서 let 키워드로 선언된 변수는 해당 블록 내부에서만 유효하고, 반복문이 종료되면 소멸된다. 이와 같은 블록 레벨 스코프는 코드의 가독성유지보수성을 높여주는 장점이 있다.

ES6(ES2015)에서는 let과 const 키워드를 사용하여 블록 레벨 스코프를 지원한다. let은 변수를, const는 상수를 선언할 때 사용되며 let과 const로 선언된 변수나 상수는 해당 블록 내부에서만 유효한다.

아래의 코드로 예시를 들면,

for (let i = 0; i < 10; i++) {
  console.log(i);
}
console.log(i); // Reference Error: i is not defined

for문의 블록 내부에서 선언된 i 변수는 해당 블록 내부에서만 유효하므로, for문이 종료된 이후의 코드에서 i 변수를 참조하면 ReferenceError가 발생한다! 이러한 특성은 변수의 생명주기를 블록 내부로 제한하여 예기치 않은 버그를 방지하고, 코드의 가독성유지보수성을 높여준다.


피드백은 언제나 환영입니다! 늘 발전하려고 노력하는 미래의 주니어 개발자입니다.

profile
자대고 css 하는 프론트엔드 개발자

0개의 댓글