const str = "orange"
str = "banana"; //-> error! 값의 재할당이 불가능하다.
function home() {
const list = ["apple", "orange", "watermelon"]
list.push("banana");
// push 등을 통해 배열의 값을 변경하는 것은 가능하다.
}
const
를 사용하더라도 배열과 오브젝트의 값을 변경하는 것은 가능하다.
재할당만 불가능.
var
는 함수단위 스코프,let
은 블록단위 스코프
function home() {
for (var i = 0; i < 100; i++) {
}
console.log(i) // 100
}
function home() {
for (let i = 0; i < 100; i++) {
}
console.log(i) // not defined 에러발생
}
var list = document.querySelectorAll("li");
for (var i = 0; i<list.length; i++) {
list[i].addEventListener ("click", function() {
console.log(`${i}번째 리스트 입니다.`);
});
}
-> 대표적인 클로저 문제 ❗
var
를 사용했을때는 모든 리스트를 눌러도 4번째 리스트라고 출력된다.
var
대신 let
을 사용하면 바로 해결됨.
const
를 기본으로 사용한다.- 변경이 될 수 있는 변수는
let
을 사용한다.var
는 사용하지 않는다.
const list = ["apple", "orange", "watermelon"];
list2 = [].concat(list, "banana");
console.log(list === list2); //false