본문 바로가기

javascript

TIL no.9 - let / const / var 차이

Scope는 무엇인가요?

-각 상수나 변수 등의 요소들이 허용된 영역, 범위를 말합니다.

 

Hoisting이란 무엇인가요?

-모든 선언을 가장 위로 끌어올린다는 의미입니다.

함수를 선언하기 이전에 함수의 값을 사용한다는 것이 안되지만 ,

var 변수는 hoisting이 가능하기 때문에 변수 선언 이전에 호출하고 이후에 변수를 선언하여도 오류없이 처리되는 것을 볼 수 있습니다.


 

var 변수 : 값을 변경할 수 있을 뿐 아니라 언제든 다시 선언할 수 있습니다.

 

const 상수 : 선언할 때 값을 넣어주어야 하고 한번 넣은 값은 바꿀 수 없는, 상수를 말합니다.

let 변수 : 선언과 값 정의 따로 할 수 있다. 넣은 값을 이후 얼마든 바꿀 수 있지만 선언을 다시 하는 건 못하게 되어 있습니다.

*const와 let은 자바스크립트의 ES6, ECMA 2015 버전부터 생긴 것들 입니다.

 


var 변수는 자바스크립트 특유의 개념인 hoisting을 이용할 수 있어서 선언부 위로 올라갈 수 있습니다..

const나 let은 블록안에서 선언되면 그 안으로 제한되는 블록 레벨 스코프를 가집니다.

하지만 var 변수들은 선언부가 함수 안이기만 하면 블록에 선언되었다해도 해당 함수아 안을 어디든 돌아다닐 수 있습니다. 

 

 

*불가피한 상황이 아니면 전역변수를 사용하지 않는다.

 

var 변수는 이후에 선언되기 전에 사용가능하며 과거의 자바스크립트에서 남은 잔해라고 여깁니다. 

함수 스코프를 가지기 때문에 때때로 문제를 마주하게 만듭니다.