본문 바로가기

JavaScript) var VS let VS const -> what is Scope / hoisting ?

ref) 자바스크립트 동작원리와 ES6 - Fundamentals of JavaScript & ES6

ref) 생활코딩 - JavaScript - var VS let VS const

 

자바스크립트에서 변수 선언에 var, let, const를 사용한다. 

이 중 변수 사용에 var는 절대 사용하지 말라! 라는 말을 듣곤 한다. -> 면접에서도 많이 물어본다! 

무슨 차이가 있을까?! 

 

letconst는 2015년 ES6에서 도입된 변수 선언키워드로 '블록 스코프' 레벨을 따른다.

ECMAScript란?JavaScript 언어의 표준이며 ES6라고도 한다.

'let'은 변수 / 'const'는 상수를 선언

 

var VS let, const

  var let const
function local Scope O O O
block Scope X O O
재선언 O X X
재할당 O O X

 

* 스코프(Scope)는 범위, 영역이라 생각하면 된다. 

 

(자바스크립트에서)

- global Scope : 전역범위. 일반적으로 모든 코드가 실행되는 웹페이지. -> 가장 큰 범위.  

- function local Scope : 함수 영역

- block Scope : 코드 블록 { } (함수, if문, for문, while 문, try/catch 문 등)  내의 영역

 

다른 언어와 다르게 자바스크립트의 var는 아래와 같은 성질이 있다! 

 

var

- var 키워드 생략 가능

- 변수 중복 선언 허용

- 변수 호이스팅 가능 

     -> var : undefined로 초기화

     -> let : ReferenceError 발생

위와 같은 엄격하지 않은 조건으로 인해 복잡해 질 수 있음!

----> 그러므로 var는 사용하지 말자!!

 

 

* 호이스팅(Hoisting)

: var나 function등 선언문이 해당 Scope의 선두로 옮겨진 것처럼 동작하는 것

 

 

 

 

 

 

REF)

script Scope : Google's V8 JavaScript engine calls the part of the global environment that holds the new style of lexically-scoped globals created when you use , , and at global scope

 

'JavaScript' 카테고리의 다른 글