TIL 5) Scope

Hover·2023년 3월 13일
0

TIL

목록 보기
6/27

0. 시작하기

오늘 모의면접 주제 중 scope가 있었다.
scope에 대한 개념은 잡혀있지만, 확실하게 기반을 잡고 가는 것이 좋을 것 같아 정리해보려고 한다.

1. scope란?

스코프는 변수가 접근(사용)할수 있는 범위로 변수가 선언된 스코프에 따라 접근 가능한 범위가 달라진다.
외부 스코프에서 선언된 변수는 내부 스코프에 접근이 가능하지만, 반대는 불가능하다.

2. block scope & function scope

스코프에는 두 가지 종류가 있는데 함수 스코프와 블록 스코프이다.
es6 이전에 사용하던 변수 var는 함수 스코프이고 es6에 와서 사용하는 let,const는 블록 스코프이다.

함수 스코프는 함수(function)단위고 블록 스코프는 대괄호({}) 단위로 나뉘어진다.

function a(num) {
  if (num) {
    var b = num;
    return num;
  }
  console.log(b);
}

console.log(a());

함수 스코프를 받는 var은 위와 같은 코드에서 undefined를 출력한다.

if문이 통과되지 않는데에도 변수 b가 선언된 이유는 var는 함수 스코프이기 때문이다.

function a(num) {
    var b;
  if (num) {
    b = num;
    return num;
  }
  console.log(b);
}

console.log(a());

따라서 var b 는 위와 같이 선언이 된다(호이스팅)

반면에 let으로 선언하면 reference error가 발생한다.

let은 블록 스코프로 함수가 아닌 if문 block 안에서만 참조가 가능해진다.

profile
프론트엔드 개발자 지망생입니다

0개의 댓글