728x90
반응형
const와 let
const는 ES6 문법에서 새로 도입한 것으로 한 번 지정하고 나면 변경이 불가능한 상수를 선언할 때 사용하는 키워드
let은 동적인 값을 담을 수 있는 변수를 선언할 때 사용하는 키워드
ES6 이전에는 값을 담는 데 var 키워드를 사용했지만 var 키워드는 scope(해당 값을 사용할 수 있는 코드 영역)가 함수 단위임
function myFunction() {
var a = "hello";
if(true) {
var a = "bye";
console.log(a); // bye
}
console.log(a); // bye
}
myFucntion();
if문 바깥에서 var 값을 hello로 선언하고, if문 내부에서 bye로 설정함
if문 내부에서 새로 선언했음에도 if문 밖에서 a를 조회하면 변경된 값이 나타남
이런 결점을 해결해 주는 것이 바로 let과 const임
function myFunction() {
let a = 1;
if(true) {
let a = 2;
console.log(a); // 2
}
console.log(a); // 1
}
myFunction();
let과 const는 scope가 함수 단위가 아닌 블록 단위이므로, if문 내부에서 선언한 a 값은 if문 밖의 a 값을 변경하지 않음
🔥 let과 const를 사용할 때 같은 블록 내부에서 중복 선언이 불가능함 🔥
let a = 1;
let a = 2; // 오류: Uncaught SyntaxError: Identifier 'a' has already been declared.
그리고 const는 한번 선언하면 재설정 할 수 없음
const b = 1;
b = 2; // Uncaught TypeError: Assignment to constant variable.
그렇다면 어떤 상황에 각 키워드를 사용해야 할까❓
일단 ES6 문법에서 var를 사용할 일은 없음
let은 한 번 선언한 후 값이 유동적으로 변할 수 있을 때만(예: for문) 사용하고, const는 한 번 설정한 후 변할 일이 없는 값에 사용함
🍋 기본적으로 const를 사용하고, 해당 값을 바꾸어야 할 때는 let을 사용함 🍋
반응형
'프로그래밍 > JavaScript' 카테고리의 다른 글
[error is not defined 에러] ReferenceError: error is not defined (0) | 2021.04.27 |
---|---|
rel="noreferrer noopener"를 쓰는 이유 (0) | 2021.04.09 |
Array.prototype.filter() (0) | 2021.03.05 |
화살표 함수 (0) | 2021.02.10 |
07.23(정규표현식) (0) | 2020.07.23 |