let, const, var

김서현·2025년 1월 16일

frontend

목록 보기
15/34

1. varlet의 차이

var

  • 옛날 방식: 자바스크립트 초창기부터 사용되던 방식입니다.
  • 특징 1: 블록 스코프를 무시. (이유: 함수 스코프라서)
    블록 {} 안에서 선언하더라도, 블록 밖에서도 사용할 수 있습니다.
{
  var x = 10; // 블록 안에서 선언
}
console.log(x); // 10 (블록 밖에서도 접근 가능)
  • 특징 2: 같은 이름의 변수 선언 가능
    같은 이름으로 변수를 여러 번 선언해도 에러가 나지 않습니다.
var a = 5;
var a = 10; // 다시 선언 가능
console.log(a); // 10

let

  • 요즘 방식: var의 단점을 개선한 새로운 방식입니다.
  • 특징 1: 블록 스코프 준수
    let으로 선언한 변수는 블록 {} 안에서만 접근할 수 있습니다.
{
  let y = 20; // 블록 안에서 선언
}
// console.log(y); // 에러 발생 (블록 밖에서는 접근 불가)
  • 특징 2: 같은 이름의 변수 선언 불가
    이미 선언된 이름의 변수를 다시 선언하려고 하면 에러가 납니다.
let b = 5;
// let b = 10; // 에러 발생 (같은 이름 선언 불가)
  • 특징 3: 선언 전에 사용할 수 없음
    var와 달리, let으로 선언한 변수는 선언하기 전에 접근하면 에러가 발생합니다.
    (이걸 "Temporal Dead Zone"이라고 합니다.)
// console.log(c); // 에러 발생
let c = 30;

2. const

  • 상수 선언: 변하지 않는 값을 저장할 때 사용합니다.
  • 특징 1: 값 변경 불가
    const로 선언한 변수는 값을 다시 할당할 수 없습니다.
const PI = 3.14;
// PI = 3.15; // 에러 발생 (값 변경 불가)
  • 특징 2: 객체와 배열의 내부는 변경 가능
    const는 변수 자체를 바꿀 수 없지만, 객체나 배열의 내부 값은 바꿀 수 있습니다.
const person = { name: "Alice" };
person.name = "Bob"; // 내부 값 변경 가능
console.log(person.name); // Bob

const numbers = [1, 2, 3];
numbers.push(4); // 배열 수정 가능
console.log(numbers); // [1, 2, 3, 4]
  • 특징 3: 선언과 동시에 초기화해야 함
    선언할 때 값을 지정하지 않으면 에러가 납니다.
// const age; // 에러 발생 (초기값 필요)
const age = 25; // 올바른 선언

⭐요약 비교

키워드스코프값 재할당변수 재선언선언 전에 사용
var함수 스코프가능가능가능 (undefined)
let블록 스코프가능불가능불가능 (에러)
const블록 스코프불가능불가능불가능 (에러)

언제 사용하면 좋을까?

  1. let: 일반적으로 변수가 변할 수 있는 경우 사용합니다.
  2. const: 변하지 않는 값이나 객체, 배열을 사용할 때 기본으로 사용합니다.
  3. var: 옛날 코드 유지보수나 특수한 상황이 아니면 사용하지 않는 것이 좋습니다.

참고

함수 스코프와 블록 스코프

  • 함수 스코프(Function Scope): 변수가 함수 안에서만 접근 가능. 함수 밖에서는 보이지 않음. (var가 해당)
function test() {
  var x = 10; // 함수 안에서 선언
}
console.log(x); // 에러 발생 (함수 밖에서 접근 불가)
  • 블록 스코프(Block Scope): 변수가 블록 {}에서만 접근 가능. 블록 밖에서는 보이지 않음. (letconst가 해당)
{
  let y = 20; // 블록 안에서 선언
}
console.log(y); // 에러 발생 (블록 밖에서 접근 불가)
profile
한양대 학생입니다. 서울캠입니다.

0개의 댓글