[WEB][js] let과 const


let

개념

  • 데이터를 저장할 때 사용하는 선언 방법
  • 블록 수준의 유효 범위를 지원
  • 값 변경 가능
  • 중복 선언은 불가! 💡

 

  • 즉, 이미 선언한 변수를 참조할 때는 let 없이 변수명만 사용하면 되고
  • 값을 변경하고 싶을 때는 let 없이 변수명에 값을 대입해주면 됨.

 

예시 코드

let msg = 'GLOBAL';
function outer() {
  let msg = 'OUTER';
  console.log(msg);

  if (true) {
    let msg = 'BLOCK';
    console.log(msg);
  }
}

outer();
결과
OUTER
BLOCK
  • 값 변경이 가능한 변수 (상수 x)
  • 블록 수준의 유효 범위 지원

 

let msg = '하이!';
let msg = '안녕';
console.log(msg);
결과
SyntaxError: Identifier 'msg' has already been declared (에러)
  • 중복 선언 불가

 


const

개념

  • 변하지 않는 데이터(상수: constant)를 저장할 때 사용하는 선언 방법
  • 블록 수준의 유효 범위를 지원
  • 재할당 불가

 

예시 코드

const arr = { name: '90002', age: 15 };
arr = { name: '길동', age: 90 };

console.log(arr);
결과
TypeError: Assignment to constant variable.
  • 상수, 즉 재할당 불가

 

const arr = { name: '90002', age: 25 };
arr.name = '길동';

console.log(arr);
결과
{ name: '길동', age: 25 }
  • 주의할 점!
  • 객체가 상수일 때, 그 객체의 속성은 변경이 가능하다.

⭐⭐⭐

  • 위 그림과 같이, arr가 참조하는 메모리 주소가 변경되는 것이 아니라 속성값이 변경되는 것이기 때문에!

 


참고 내용

호이스팅과 var

  • 변수의 선언을 scope의 최상단으로 옮기는 행위
  • 즉, js 코드를 실행시킬 때 var로 선언된 변수들을 찾아서 메모리를 미리 할당 😯 (값 할당 x, 메모리만!)
  • 함수 단위로 호이스팅
  • 호이스팅 단계에서 이미 변수가 생성되어 있다면? 변수를 생성하지 않고 건너뜀.
    • 이 특징이 자바스크립트는 변수의 중복 선언을 허용하는 것처럼 보여지는 것!
var arr;
console.log(arr);
결과
undefined
  • var로 선언된 변수들을 찾아서 메모리를 미리 할당
  • 따라서 에러 x

 

var str = '100';
console.log(str);

var str = '00';
console.log(str);
결과
100
00
  • 이미 변수가 생성되어 있다면 변수를 생성하지 않고 건너뜀
  • 즉, 중복 선언 가능
  • 따라서 에러 x

'Web > js' 카테고리의 다른 글

[WEB][js] parameter vs. argument  (2) 2025.03.29