[JavaScript] 변수 선언 var, let, const

열심히하시는개발자·2020년 11월 22일
0
post-thumbnail

1. var

  • 변수에 중복 선언이 가능
  • 값을 다시 할당 가능
  • 함수 레벨 scope(블록 내부에 선언되어도 외부에서 접근 가능)
  • 변수명 중복이 가능하기 때문에 문제를 야기 할 수 있음
var num = 10;
console.log(num);

var num = 20;
console.log(num);

2. let

  • 변수에 중복 선언이 불가능
  • 값을 다시 할당 가능
let num = 10;
console.log(num);

let num = 20;
console.log(num);

let num이 중복 선언되었다고 console에서 알려준다.

3. const

  • 변수에 중복 선언이 불가능
  • 한번 할당한 값을 변경할 수 없음(변하지 않는 상수)
const number = 1;
console.log(number);

const number = 2;
console.log(number);

const num 또한 중복 선언되었다고 console에서 알려준다.

4. 호이스팅(hoisting)

  • 자바스크립트 실행시 변수와 함수에 대해 호이스팅을 적용하고, 함수 안에 있는 선언들을 모두 끌어올려서 해당 함수 유효 범위의 최상단에 선언하는 것을 말한다.

4-1) var

console.log(number); //undefiend
var number = 3;

자바스크립트 실행 시에 호이스팅에 의해 var로 선언된 number변수가 최상단으로 선언되기 때문에 에러가 나지 않고 undefined가 나오게 된다. 그 이유는 var로 선언된 변수는 호이스팅이 되어 초기화와 선언이 동시에 적용되기 때문에 undefiend가 나오게 된다 !

4-2) let

console.log(number); //number is not defined
let number = 3;

자바스크립트 실행 시에 호이스팅에 의해 let으로 선언된 number변수가 최상단으로 선언되지만 number is not defined가 나오게 된다. 그 이유는 let으로 선언된 변수는 호이스팅이 되어 선언은 되지만 초기화는 실제 let이 사용한 지점에 도착했을 때 적용이 되기 때문에 초기화 이전에 변수에 접근하는 에러가 발생한다!

5. 변수의 3단계 과정

  1. 선언
  2. 초기화
  3. 할당

0개의 댓글