var, let, const 차이점은?

2021. 7. 20. 09:49
반응형
  • var는 function-scoped이고, let, const는 block-scoped입니다.
  • function-scoped와 block-scoped가 무슨말이냐?
  • scope란?

scope

위 예제에서 전역에서 선언된 변수 x는 어디에든 참조할 수 있다. 하지만 함수 foo 내에서 선언된 변수 x는 함수 foo 내부에서만 참조할 수 있고 함수 외부에서는 참조할 수 없다. 이러한 규칙을 스코프라고 한다.

function-scoped

자바스크립트는 함수 레벨 스코프를 사용한다. 즉, 함수 내에서 선언된 매개변수와 변수는 함수 외부에서는 유효하지 않다. 따라서 변수 b는 지역 변수이다.

block-scoped

블록 스코프란 코드 블록({...})내에서 유효한 스코프를 의미한다. 여기서 "유효하다"라는 것은 "참조(접근)할 수 있다"라는 뜻이다.

위의 C언어 코드를 보면 if문 내에서 선언된 변수 x는 if문 코드 블록 내에서만 유효하다. 즉, if문 코드 블록 밖에서는 참조가 불가능하다.

 

var vs let vs const

var은 변수 재선언, 재할당 가능. 

let은 변수 재선언 불가능, 재할당 가능

const는 변수 재선언 불가능, 재할당 불가능

*var은 함수 스코프를 따르고 블록 스코프를 무시한다. 즉, 블록 스코프 내에 선언된 변수는 외부에서 접근이 불가능 한데, var로 선언하면 접근이 가능하다. 또한, 재선언을 해도 에러를 내지 않는다. 그래서 var을 그냥 쓰지않는 것을 추천한다.*

 

var a = 'test'

var a = 'test2'//가능

a = 'test3'//가능

var은 function-scoped로 hoisting이 된다.

 

let a = 'test'

let a = 'test2' //불가능

a = 'test3' //가능

 

const a = 'test'

const a = 'test2'//불가능

a = 'test3'//불가능

let, const는 block-scoped 단위로 hoisting이 된다.

 

 

 

 

 

 

 

 

반응형
LIST

'학습 TIL > Javascript' 카테고리의 다른 글

조건문  (0) 2021.07.20
함수 선언식 vs 함수 표현식  (0) 2021.07.20
타입  (0) 2021.07.20
함수  (0) 2021.07.20
변수  (0) 2021.07.20

BELATED ARTICLES

more