생활코딩으로 JavaScript의 기초를 배웠던 나는 let의 존재를 몰랐다..
ES6로 추가된 변수 선언인 let과 const에 대해 간략하게 정리해본다.
var와 let의 가장 기본적인 차이는,
let은 var와 달리 변수의 범위가 해당 code block으로 한정 된다.
다음은 예시.
function getValue(condition) {
if (condition) {
let value = "blue";
// other code
return value;
} else {
// value doesn't exist here
return null;
}
// value doesn't exist here
}
이에 반해, var로 선언을 하면 해당 code block 밖에서도 변수를 호출할 수 있다.
전역 변수처럼 기능하는 것.(regardless of where the actual declaration occurs; this is called hoisting)
// var hoisting (move delaration from bottom to top)
// var has no block scope.
function getValue(condition) {
var value;
if (condition) {
value = "blue";
// other code
return value;
} else {
return null;
}
}
따라서 Let declaration은 다음과 같은 상황에서 오류가 난다.
var count = 30;
// Error: `count` has already been declared.
let count = 40;
Constant란 한 번 설정하면 값을 변경할 수 없다는 의미다.
즉 immutable data이기 때문에 security, thread safety, reduce human mistakes하는 목적으로 사용한다.
참고 사이트
https://codeburst.io/part-2-var-vs-const-vs-let-69ea73fe76c1
hoisting이란?
https://velog.io/@marcus/Javascript-Hoisting