IT/Font-end

[Javascript-오리엔테이션]let, const, var 변수

omaeng 2020. 6. 4. 15:30

const를 기본으로 사용하되, 변경이 될 수 있는 변수나 의도적으로 변경하고자하는 변수는 let을 사용한다.

var는 가급적으로 사용하지 않는다.

 

let은 for문이나 블럭문 안에 사용하는것을 기본으로 하지만 때에 따라 스크립트 전역에서 사용할 수 있는 변수로도 사용이 가능하다.

 

function home() {
  const homename = 'myhouse';
  homename='yourhouse';
  console.log(homename);
}

home();

 

위와 같은 코드의 경우 home();을 마지막 줄에서 호출하게 되고, 호출된 함수에서는 const 타입의 homename을 선언했다. 하지만 함수내 2번 째 줄에서는 선언된 변수의 내용을 바꾸려고한다. 하지만 const는 바뀔수가 없는 변수로, 처음에 선언된 데이터가 유지된다. 결국 이 스크립트는 TypeError가 발생하게 된다.

 

 

const 특성과 immutable array

const는 절대불변의 변수가 아니라 재할당이 불가능한 변수이다. 즉, array를 예로 들었을때

function home(){
  const list = ["a","b","c"];
  list.push("d");
  console.log(list);
}
home();

a,b 그리고 c가 들어있는 배열이 있다. 여기서 const 타입으로 변수가 선언되었을때 .push(); 함수를 통해서 list 배열에 값을 넣어보겠다. 절대 불변의 변수라고 생각했던 const가 절대불변은 맞지만 절대 불변은 아니다. 기존의 값이 초기화 되었을때의 값을 재할당 했을때는 오류가 나지만, 값을 추가하는 경우에는 에러가 발생하지 않는다. 그 이유는 앞서 말했듯 기존의 값을 다시 정의하지 않고 새로운 값을 이어붙였기 때문이다.