변수 (Variable) - 2

변수의 선언

자바스크립트에서는 변수를 선언할 때,
var, let, const를 사용해 선언한다.

각각의 선언의 특징에 대해 알아보자!

var

var는 변수를 선언할 때 사용하고, 선택적으로 값을 초기화할 수 있다.

var num;

var num2 = 3;

변수 선언만 할 수도 있고, 변수에 값을 초기화하면서 선언할 수도 있다.

var로 선언된 변수의 범위는 현재 실행 문맥이다.
그 문맥은 변수를 둘러싼 함수, 혹은 함수 외부에 전역으로 선언된 변수일 수도 있다.

let

let 또한 변수를 선언할 때 사용하는데, 선언과 동시에 임의의 값으로 변수를 초기화한다.

let num = 3;

let으로 선언된 변수의 범위는 블록이다.

var과 let의 차이

var로 선언된 변수는 블록을 고려하지 않고, 현재 함수 어디에서나 접근이 가능하다. 반면 let으로 선언된 함수는 블록 내에서 사용 가능하다.

function varFunc() {
  var num = 1;
  if (true) {
    var num = 2;
    console.log(num); // 2
  }
  console.log(num); // 2
}

function letFunc() {
  let num = 1;
  if (true) {
    let num = 2;
    console.log(num); // 2
  }
  console.log(num); // 1
}

이로 인해, switch문과 같이 한 블록을 사용하는 경우 let을 여러번 선언하면 문제가 될 수 있다.

switch(num) {
  case 1:
    let i = 1;
    break;
  case 2:
    let i = 2; // 재선언으로 인한 SyntaxError;
    break;
}

그리고, let은 초기화 시점을 지난 후에야 변수를 사용할 수 있다. var로 선언된 변수의 경우 초기화 시점이 지나지 않고 사용한 경우 에러가 아니라 undefined를 출력한다. 하지만, let의 경우 ReferenceError를 보게 된다.

console.log(num) // undefined
var num = 2;

console.log(num2) // ReferenceError
let num2 = 3;

이에 JS의 실행 컨텍스트, 호이스팅에 대한 개념이 필요한데, 나중에 정리하자.

const

let과 같이 블록 범위를 가지며, 변수가 아닌 상수를 표현한다. 재선언, 재할당되지 않는다. 선언과 동시에 값을 초기화한다.

const myName = 'sinf';

참고

좋은 웹페이지 즐겨찾기