반응형
SMALL

ES6 이후로 버그의 요인이 될 확률이 높은 var는 사실상 쓰지 않는 것이 맞다고 생각한다 .

하지만 이전에 작성된 코드들의 이해와 수정을 위해 var의 특징에 대해 알 필요는 있다.

 

var, let, const 모두 변수를 선언할 때 사용되는 키워드이다.

 

var 

  1. ES6이전에는 변수를 선언하는 유일한 방법

  2. 이미 선언한 변수명으로 또 변수를 선언해도 에러가 나지 않는다.

  3. 변수를 선언하기 전에 먼저 변수를 사용해도 에러가 나지 않는다. (hoisting)

  4. function level scope(local scope)를 가진다.

*function level scope: 함수 내에서만 유효성을 가지는 범위

 

let

  1. ES6에 새로 등장한 변수 선언 키워드

  2. 이미 존재하는 변수명으로 또 변수를 선언시 에러가 발생한다.

  3. 변수를 선언하기 전에 사용하게 되면 에러가 발생한다.

  4. block level scope(local scope)를 가진다.

*block level scope: 블록(중괄호로 둘러싸인 부분)내에서 유효성을 가지는 범위

 

const

  1. let과 같이 ES6에 새로 등장한 변수 선언 키워드

  2. 이미 존재하는 변수명으로 또 변수를 선언시 에러가 발생한다.

  3. 변수를 선언하기 전에 사용하게 되면 에러가 발생한다.

  4. block level scope(local scope)를 가진다.

  5. var, let은 변수 선언시 초기 값을 주지 않아도 되지만 const는 반드시 초기값을 할당해 주어야 한다.

  6. var, let은 이미 선언한 변수에 다시 값을 할당 할 수 있지만, const는 한 번 할당한 값을 변경할 수 없다.
    (단, 객체 안의 property는 변경 가능)

*var, let, const 모두 hoisting은 적용이 되나, var의 3번과 다르게 let, const의 3번에서 에러가 발생하는 이유는   
var의 경우 hoisting 되면서 변수에 할당된 값이 없으면 javascript가 자동으로 undefined값을 할당해 주기 때문이다.

 

*이처럼 let, const에서 변수 선언 후 값이 할당되지 않은 상태를 TDZ(Temporal Dead Zone)라고 한다.

(const의 경우는 선언시 초기값을 할당해 주지 않으면 에러가 발생한다.)

 

2021/01/20 - [개발/Javascript] - Hoisting

 

Hoisting

Hoisting은 hoist라는 끌어올리다는 단어에서 비롯된 용어이다. MDN에서는 hoisting이라는 용어에 대해 이렇게 설명하고 있다. "호이 스팅은 JavaScript에서 실행 콘텍스트(특히 생성 및 실행 단계)가 어떻

jwookj.tistory.com

2021/01/21 - [분류 전체보기] - Scope(유효범위)

 

Scope(유효범위)

Scope(유효 범위)는 변수에 접근할 수 있는 '범위'를 뜻한다. scope는 global scope(전역 범위)와 local scope(지역범위)로 나눌 수 있다. //global scope를 가지는 변수 vscope var vscope = "global"; function..

jwookj.tistory.com

 

*참고 : medium.com/@yeon22/javascript-var-let-const%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90-9fab5c264c9c

반응형
LIST

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

closure(클로저)  (0) 2021.01.27
reduce  (0) 2021.01.24
Scope(유효범위)  (0) 2021.01.21
Hoisting  (0) 2021.01.20
charCodeAt, fromCharCode  (0) 2021.01.11

+ Recent posts