Var 와 Let, Const 차이

Var 와 Let, Const 차이

  1. let과 const는 es6 이후 변수 선언방식
  2. let과 const는 한번 선언하면 재선언 불가능하다
  3. let은 재할당은 가능하다.
  4. var는 Function Scoped이고 let const는 Block Scoped입니다

let과 const는 es6 이후 변수 선언방식

/// es5
var a = 0;

/// es6
let a = 0;
const b = 0;

let과 const는 한번 선언하면 재선언 불가능하다.

/// es5
var a = 0;
var a = 1;

/// es6
let a = 0;
let a = 1; // Uncaught SyntaxError: Identifier 'a' has already been declared
const b = 0;
const b = 1; // Uncaught SyntaxError: Identifier 'b' has already been declared

let은 재할당은 가능하다.

let a;
a = 1;

const a; // Uncaught SyntaxError: Missing initializer in const declaration

var는 Function Scoped이고 let, const는 Block Scoped입니다.

// es5;

var a = '전역변수';

(function b() {
  var a = '함수범위 스코프';
  console.log(a); // 1. 함수범위 스코프
})();
console.log(a); // 2. 전역변수

var b = '전역 변수';
{
    var b = '블록내 선언 변수';
}

console.log(b); // 3. 블록내 선언 변수
// es6
let a = '전역변수';

(function b() {
  let a = '함수범위 스코프';
  console.log(a); // 1. 함수범위 스코프
})();
console.log(a); // 2. 전역변수

let b = '전역 변수';
{
    let b = '블록내 선언 변수';
}
console.log(b); // 3. 전역 변수
// es5
console.log(a); // undefined

a = '호이스팅';
var a;
console.log(a); // 호이스팅
// es5
console.log(a); // undefined

a = '호이스팅';
var a;
console.log(a); // 호이스팅
// es6
console.log(a); // Uncaught ReferenceError: a is not defined

a = '호이스팅';
let a;
console.log(a);