모던자바스크립트 Deep Dive에서 발췌한 let, const 키워드와 블록 레벨 스코프에 관한 내용을 적어보자
var 키워드의 단점을 보완하기 위해 ES6에서 새로운 변수 선언 키워드인 let과 const를 도입
let a = 1;
a = 2;
console.log(a) // 2
function getAllLetters(str) {
let strArray = [];
for(let i=0; i < str.length; i++){
strArray.push(str[i])
}
return strArray;
}
console.log(getAllLetters('wecode')) // ["w", "e", "c", "o", "d", "e"]
-- 같은 스코프 안에서 중복선언을 하는 경우
function getAllLetters(str) {
let strArray = [];
let strArray = [1, 3];
for(let i=0; i < str.length; i++){
strArray.push(str[i])
}
return strArray;
}
console.log(getAllLetters('wecode')) // SyntaxError: Identifier 'strArray' has already been declared
-- 재할당은 가능하다!!
function getAllLetters(str) {
let strArray = [];
strArray = [1, 3];
for(let i=0; i < str.length; i++){
strArray.push(str[i])
}
return strArray;
}
console.log(getAllLetters('wecode')) // [1, 3, "w", "e", "c", "o", "d", "e"]
✨ let 키워드의 차이점
const a = 1;
a = 2; // TypeError: Assignment to constant variable.
const 키워드로 선언된 변수에 객체를 할당한 경우 값을 변경할 수 있다(변수에 할당된 참조 값(메모리주소)은 변경되지 않는다)
const a = {name : "Lee"}
a.name = "Kim"
console.log(a) // {name: "Kim"}
const a; // Uncaught SyntaxError: Missing initializer in const declaration(문법 에러)
const a = 1
---
let lalala; // undefined
✨ let 키워드의 공통점