자바스크립트 변수

YangJiWon·2020년 8월 17일
2

변수 선언 생략

  • var 문으로 선언하지 않은 변수 값을 읽으려고 시도하면 참조 오류가 발생합니다.
console.log(x); //-> ReferenceError: x is not defined(오류 메시지)
  • 그러나 var 문으로 선언하지 않은 변수에 값을 대입할 때는 오류가 발생하지 않습니다.
x = 2;
console.log(x);
  • 변수를 선언하지 않은 상태에서 값을 대입하면 자바스크립트 엔진이 그 변수를 자동으로 전역 변수로 선언하기 때문입니다.
    하지만 변수를 선언하지 않고 변수를 사용하는 행위는 버그의 원인이 될 수 있습니다.

변수 끌어올림과 변수 중복 선언

  • 프로그램은 작성한 순서에 따라 윗줄부터 차례대로 실행됩니다. 하지만 변수 선언은 이 원칙을 따르지 않습니다.
console.log(x); // -> undefined
var x;

이 코드에서 1번째 줄은 아직 변수 x가 선언되지 않았기 때문에 오류가 발생할 것 같지만, 실제로는 오류가 발생하지 않고 undefined가 출력됩니다.

  • 이는 프로그램 중간에서 변수를 선언하더라도 변수가 프로그램 첫머리에 선언된 거ㅗㅅ처럼 다른 문장 앞에 생성되기 때문입니다. 이를 변수 선언의 끌어올림(호이스팅, hoisting)이라고 합니다.

  • 단 선언과 동시에 대입하는 코드는 끌어올리지 않습니다.

console.log(x); // -> undefined
var x = 5;
console.log(x); // -> 5
  • 또한 var 문을 사용하여 같은 이름을 가진 변수를 여러 개 선언하더라도 문제가 발생하지 않습니다.
    같은 이름으로 선언된 변수는 모두 끌어올린 후에 단 하나의 영역에만 할당됩니다.
    변수 선언의 끌어올림은 다른 언어에는 없는 자바스크립트만의 고유한 특징입니다.
profile
데이터데이터데이터!!

0개의 댓글