[JavaScript] 변수 선언 비교(var, let, const)

2022. 6. 26. 21:30·개념정리/JavaScript

JavaScript의 변수 선언 방식

변수는 선언 → 초기화 → 할당 단계에 걸쳐 생성된다.

  • 선언: 변수명을 메모리에 연결시키는 것
  • 초기화: 값을 저장하기 위한 메모리 공간을 확보하는 것
  • 할당: 변수에 값을 저장하는 것
  재선언 재할당 스코프
var O O 함수 레벨
let X O 블록 레벨
const X X 블록 레벨

 

var

var의 가장 큰 특징은 재선언이 가능하다는 것이다.

var a = 1;
console.log(a) // output: 1

var a = 2;
console.log(a) // output: 2

var a = 3;
console.log(a) // output: 3

같은 변수명으로 여러번 선언이 가능하기 때문에 이미 사용하고 있던 변수를 실수로 재선언 해버린다고 해도 알 수 있는 방법이 없어서 위험하다.

 

let

let a = 1;
consolel.log(a) // output: 1

let a = 2;
console.log(a) // Uncaught SyntaxError: Identifier 'a' has already been declared

a = 3;
consolel.log(a) // output: 3

2로 재선언을 할 때는 이미 선언이 되었다는 오류가 났지만 3으로 재할당은 가능했다.

 

const

let a = 1;
consolel.log(a) // output: 1

let a = 2;
console.log(a) // Uncaught SyntaxError: Identifier 'a' has already been declared

a = 3;
consolel.log(a) // Uncaught TypeError: Assignment to constant variable.

재선언을 했을 때도 오류가 나고 3으로 재할당을 할 때도 오류가 나온다. 그런데 원시 값의 재할당은 불가능하지만, 객체는 가능하다.

const player = {
  name: "kion",
  points: 10,
  fat: false,
};
console.log(player);
player.fat = true; // 변수 안에 내용물(속성값)은 바꿀 수 있음
console.log(player);
player = "kion"; // 변수 자체를 바꿀 수는 없음
console.log(player);

player가 const 로 선언되었기 때문에 player 자체(데이터 타입이 object인 것)는 바꿀 수 없다. 하지만 object안에 있는 내용물(속성 값)은 바꿀 수 있다.

 

사용 시기

const 를 사용하면 의도치 않은 재할당을 방지해 주어서 안전하기 때문에 기본적으로 const를 사용하고, 재할당이 필요한 경우에만 let을 사용하는 것이 좋다고 한다.

또한 var은 이제 거의 사용하지 않는다고 하니 잊어도 좋을듯 하다.

'개념정리/JavaScript' 카테고리의 다른 글
  • [JS] 클래스와 인스턴스
  • [TIL] JavaScript Koans
  • [JavaScript] 원시 자료형과 참조 자료형
  • [JavaScript] typeof 연산자
imKion
imKion
Front-end Developer
  • imKion
    Kion
    imKion
  • 전체
    오늘
    어제
    • 분류 전체보기 (46)
      • 문제 해결 (6)
        • 리팩터링 (3)
      • 회고 (8)
      • 개념정리 (29)
        • JavaScript (10)
        • React (9)
        • Next.JS (2)
        • WEB (5)
        • CS 외 (2)
      • 알고리즘 (2)
        • 코플릿 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JavaScript
    프론트엔드
    react 18
    til
    OOP
    frontend
    회고
    REACT
    코드스테이츠
    typeScript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
imKion
[JavaScript] 변수 선언 비교(var, let, const)
상단으로

티스토리툴바