웹개발/JavaScript

자바스크립트와 스코프

튼튼발자 2024. 5. 15. 10:14
728x90

자바스크립트에서 변수와 함수는 생성과 동시에 자신에게 접근하거나 호출할 때 제약범위를 갖습니다.

이 범위를 스코프(Scope)라고 합니다. 쉽게 말해 변수나 함수에 접근하거나 호출할 수 있는 범위를 말합니다.

 


전역, 지역 스코프

변수가 전역 스코프를 갖는다는 것은 해당 변수를 어디에서든 접근할 수 있다는 의미입니다.

반면 전역이 아닌 지역 스코프라는 것은 해당 영역에서만 접근할 수 있다는 의미입니다.

다음 코드는 함수 외부에 선언한 변수(전역 스코프)를 내부에서 접근하는 예입니다.

let a = 1; // ①

function foo() {
  console.log(a);
}

function bar() {
  console.log(a);
}

foo(); // ② 1 
bar(); // ③ 1 

console.log(a); // ④ 1

a는 함수 foo()와 bar()밖에서 선언 되었지만 내부에서 호출합니다.

이렇게 전역 스코프를 갖는 변수를 전역 변수(Global Variable)라고 합니다.

 

다음은 함수 내부에 변수를 선언하고, 함수 외부에서 접근하는 예입니다.

function foo() {
  let a = 1; // ①
}

console.log(a); // ② 오류 : a는 정의되지 않았습니다.

변수 a는 함수 foo()내부에 선언되었지만 외부에서 접근합니다. 따라서 이 코드는 오류가 발생합니다.

외부는 큰 범위, 내부는 작은 범위라고 생각하시면 됩니다.

외부에 있는 변수는 크므로 내부에서 접근할 수 있지만, 내부에 있는 변수는 작은 범위라 더 큰 범위의 외부에서는 접근을 할 수가 없습니다.

728x90