본문 바로가기

JS - let, const, var (스코프, 호이스팅) 본문

개발/JavaScript

JS - let, const, var (스코프, 호이스팅)

자전하는명왕성 2023. 1. 11. 08:57

let, const, var 차이 (scope 개념, 호이스팅)

재할당과 재선언에 대한 차이

  재할당  재선언
var O O
let O X
const X X

 

스코프 (함수 또는 변수의 동작 범위)

전역스코프&지역스코프

  • 전역 스코프 : 스크립트 전역에 선언된 변수 / 어디서든 참조 가능
  • 지역 스코프 : 함수 내에 선언된 변수 / 함수 내에서만 참조 가능

전역스코프&지역스코프 예시

 

블록스코프 & 함수스코프

let / const , var 사이의 가장 큰 차이점 중 하나는 스코프와 관련이 있다.

let / const 는 '블록 스코프, 함수 스코프'라는 특징을 가지고 있는데,

블록 스코프는, 함수 안에서 선언된 let / const 의 경우 함수 안에서만 처리될 수 있다는 의미를 지니고 있다.

말 그대로 블록(중괄호)을 사용하니 블록 스코프라고 이해해도 좋을 것 같다.

 

반대로 var는 선언한 변수가 '블록'안에 있든, 밖에 있든 상관 없이

함수 내에서 선언된 변수는 함수 내에서만 유효하다는 '함수 스코프'라는 특징만을 가지고 있기 때문에 호이스팅이 발생한다고 볼 수 있다.

따라서, 예측 가능한 코드 작성을 위해서는 let / const 를 통해 변수를 선언하거나 함수 선언문을 통해 선언하는 것이 더 적절하다.

 

호이스팅

var 와 마찬가지로

'함수 선언문'에서는 호이스팅이 발생하는데, 함수 발생 이전에 해당 함수가 스크립트 맨 위로 끌어올려진 것 같은 효과를 낸다.

그말인즉슨, 함수 선언문 역시 스크립트 내에서 예상하지 못하는 동작을 할 가능성이 높기 때문에 사용을 지양하는 것이 좋다.

 

'개발 > JavaScript' 카테고리의 다른 글

JS - 조건문 switch 문법  (0) 2023.01.11
JS - null과 undefined 차이  (0) 2023.01.11
JS - ES6의 특징  (0) 2023.01.10
JS - ==, ===의 차이점  (0) 2023.01.10
JS - Class 문법 / constructor() / import  (0) 2023.01.05
Comments