[JavaScript] scope

코린이의 성장일기·2023년 12월 8일
post-thumbnail

이번 포스팅에서는 var, let, const의 scope에 대해서 공부해보려고 한다.

scope가 뭐야???

scope는 변수나 함수의 유효 범위를 이야기한다.

스코프는 3가지가 있다.
1. 전역 스코프 (Global Scope)
2. 지역 스코프 = 함수 scope(Local Scope)
3. 블록 스코프 (Block Scope)

전역 스코프 (Global Scope): 스코프 밖에서 선언되었을 경우 스크립트의 전체 부분에 영향을 준다.


실행 순서는 전역 > 블록 > 함수 스코프 순이다.
어?? 왜 순서대로 블록 > 함수 > 전역으로 실행이 안되지??
이건 다음 포스팅에서 '호이스팅'을 공부하면서 알아보자.

var의 스코프

var는 함수 레벨 스코프를 가진다.


함수 밖에서 선언된 전역스코프에서 선언되지 않았다는 에러를 확인할 수 있다.



전역에 호출된 console.log를 주석처리 후 실행하면 함수레벨까지 실행되는것을 확인할 수 있다.

let과 const의 스코프

let과 const는 블록 레벨 스코프를 가진다. 블록은 {}기준으로 나누어진다.



let과 const 모두 블록레벨 스코프를 갖기 때문에 전역은 물론 함수 스코프에서도 에러가 발생한다.



함수스코프의 호출을 주석처리하면 정상적으로 실행되는것을 확인 할 수 있다.

var, let, const 모두 전역 스코프이자
var는 함수 스코프이고, let과 const는 블록 스코프이다.
또한 원시타입일 경우
var는 중복선언 재할당 모두 가능,
let은 재할당만 가능,
const는 중복선언 재할당 모두 불가능하다.
(이전 포스팅에서 배웠듯 참조타입일경우 const도 재할당이 가능하다.)

다음 포스팅에서는 '호이스팅'에 대해서 배워보자!

profile
작동하는 코드만 만들면 반은 완성이다.

0개의 댓글