JS 변수 선언, let vs const vs var

은유로그·2022년 3월 23일
0

📚 study

목록 보기
21/21
post-custom-banner

let

let name = 'eunyu';
console.log(name); // eunyu 출력
name = 'velog';
console.log(name); //velog 출력

let으로 변수 선언하면 위 코드처럼 값을 재할당해도 문제가 없다.

{ // 블록 스코프 시작
  let name = 'eunyu';
  console.log(name); // eunyu 출력
  name = 'velog';
  console.log(name); //velog 출력
} // 블록 스코프 끝
console.log(name); // 아무것도 출력되지 않음

name 변수를 블록 스코프 안에 선언했다면 밖에서 호출해도 소용이 없다.

let globalName = 'global name';
{ // 블록 스코프 시작
  let name = 'eunyu';
  console.log(name); // eunyu 출력
  name = 'velog';
  console.log(name); //velog 출력
  console.log(globalName); // global name 출력
} // 블록 스코프 끝
console.log(name); // 아무것도 출력되지 않음
console.log(globalName); // global name 출력

globalName 변수처럼 블록 스코프 밖에 선언했을 경우 블록 스코프 안, 밖 어디든 호출이 가능하다. 하지만 어플리케이션이 실행될 때부터 끝날 때까지 항상 메모리에 탑재되기 때문에 최소한으로 쓰는 것이 좋다.

var

console.log(age); // undefined 출력
age = 4;
console.log(age); // 4 출력
var age;

let이 나오기 전까지 사용했던 타입이다. 변수가 선언되기 전 값을 할당해도 문제가 없다. 이걸 var 호이스팅(hoisting)이라고 부른다. 호이스팅이란 끌어올리다라는 영어 뜻처럼 어디에 선언되건 상관 없이 항상 제일 위로 끌어올려주는 것이다.

또한 var는 블록 스코프를 무시하기 때문에 어디에서나 사용이 가능하기 때문에 어느 정도 규모가 큰 프로젝트에서 사용한다면 선언하지도 않은 값이 할당되어 있다는 등의 위험요소가 있기 때문에 쓰지않고 let을 사용하도록 한다.

const

const daysInWeek = 7;
console.log(daysInWeek); // 7 출력
daysInWeek = 5; // error 발생

const로 선언한 변수는 값을 할당한 뒤로 다시는 재할당이 안된다는 특징이 있다. 변경이 불가능하기 때문에 immutable 데이터 타입이라고 부르기도 한다.

profile
๑•‿•๑
post-custom-banner

0개의 댓글