본문 바로가기
Javascript

변수 선언 차이 var, let, const

by 하이바네 2022. 8. 8.
반응형

결론부터 말하자면 ES6부터 let과 const가 추가 되었으며, var, let, const 모두 사용이 가능하다.

 

하지만 나는 이제부터 let, const만을 쓸듯하다.

 

https://google.github.io/styleguide/jsguide.html#features-use-const-and-let

 

Google JavaScript Style Guide

Google JavaScript Style Guide 1 Introduction This document serves as the complete definition of Google’s coding standards for source code in the JavaScript programming language. A JavaScript source file is described as being in Google Style if and only i

google.github.io

위의 구글 스타일 가이드를 보면 

 

Declare all local variables with either const or let. Use const by default, unless a variable needs to be reassigned. The var keyword must not be used.

 

지금까지 너무 트렌드를 따라가지 않는듯 하여 노마드로 강의를 듣고 있는데 거기에서 노마드 강의에서 본 말이 떠오른다. 

 

always const

sometimes let

never var

 

위 3개의 선언에 대한 차이를 적어보자면

 

1. 중복선언 가능 여부

 불가능 : const, let
 가능 : var

 

2. 재할당

 불가능 : const  

 가능 : let, var

 *const는 constant의 줄임말로 상수를 뜻한다.(변경되지 않는 값)

3. 유효 범위

기본적으로 const, let, var는 블럭 내에서는 모두 사용 가능하다고 보면된다.

그런데 특별히 var만 if, for, while, try catch 등 내부에서 var로 선언된 변수는 전역변수로 간주한다.

 

4. 호이스팅 

undefined로 초기화 : var

초기화 안함 : const, let
*호이스팅이란 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것으로 초기화를 제외한 선언만 호이스팅을 한다. 단, var로 선언 시에만 초기화를 함

 

호이스팅에 대한 자세한 내용은 다음 링크에서 확인 가능하다.

https://developer.mozilla.org/ko/docs/Glossary/Hoisting

 

호이스팅 - 용어 사전 | MDN

JavaScript에서 호이스팅(hoisting)이란, 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미합니다. var로 선언한 변수의 경우 호이스팅 시 undefined로 변수를 초기화합니다

developer.mozilla.org

 

5. 전역객체 프로퍼티 여부

 전역객체 : var

 전역객체 아님 : const, let

 전역객체 프로퍼티는 "windows.변수명"으로 접근이 되는지 여부에 따라 다르다.

728x90

'Javascript' 카테고리의 다른 글

innerHTML, innerText, textContent 비교  (0) 2022.08.09
console API에 대해  (0) 2022.08.09
chartjs 속도 이슈 개선 방법들  (0) 2022.06.21
[javascript ]천단위 콤마(소수점 포함)  (0) 2022.06.15
IE로 접속 시 edge로 이동  (0) 2022.05.27

댓글