var 과 let

Khusan·2023년 4월 28일
0
post-thumbnail

var과 let은 모두 JavaScript에서 변수를 선언하는 키워드입니다. 그러나 두 키워드는 약간의 차이가 있습니다.

  1. var 은 함수 범위(scope)를 가지지만, let 은 블록 범위 (scope)를 가집니다.

예를 들어, var 로 선언한 변수는 함수 내에서 선언된 변수이므로, 함수 내에서 어디에서든 사용 가능합니다.

function exampleFunction() {
  var x = 1;
  if (true) {
    var x = 2; // 이전에 선언한 x 변수를 덮어쓰게 됩니다.
    console.log(x); // 2
  }
  console.log(x); // 2
}

반면에, let 은 블록 범위를 가지므로 블록 내에서만 사용 가능합니다.

function exampleFunction() {
  let x = 1;
  if (true) {
    let x = 2; // 새로운 x 변수가 선언됩니다.
    console.log(x); // 2
  }
  console.log(x); // 1
}
  1. var 은 호이스팅(hoisting)이 발생하지만, let은 호이스팅이 발생하지 않습니다.

var은 변수를 선언하기 전에 사용할 수 있습니다. 이렇게 사용하면 변수가 아직 선언되지 않았음에도 불구하고, 에러가 발생하지 않고 undefined 값을 가집니다. 이를 호이스팅이라고 합니다.

console.log(x); // undefined
var x = 1;

하지만 let으로 선언된 변수는 호이스팅이 발생하지 않으므로, 선언하기 전에 사용하면 에러가 발생합니다.

console.log(x); // ReferenceError: x is not defined
let x = 1;
  1. let은 재선언이 불가능하지만, var은 재선언이 가능합니다.

var로 이미 선언된 변수를 다시 var로 선언하면, 값이 변경됩니다.

var x = 1;
var x = 2;
console.log(x); // 2

하지만 let으로 이미 선언된 변수를 다시 let으로 선언하면, 에러가 발생합니다.

let x = 1;
let x = 2; // SyntaxError: Identifier 'x' has already been declared
console.log(x);
profile
부딪히면서 배워가는 코딩

0개의 댓글