VAR, LET, CONST

Bruce·2021년 8월 18일
0

프론트엔드 코어

목록 보기
3/31

var와 let, const의 차이점

var: 재선언 O 재할당 O 함수레벨 스코프
let: 재선언 X 재할당 O 블록레벨 스코프
const: 재선언 X 재할당 X 블록레벨 스코프

함수레벨 스코프:

  • 함수레벨 바깥에서 선언된 변수는 전역스코프.
  • 함수레벨 안에서는 함수 바깥을 제외하고 어디서든 접근 가능.

블록레벨 스코프:

  • 블록레벨 바깥에서 선언된 변수는 전역스코프.
  • 블록레벨 안에서는 해당 블록과 하위 블록레벨, 함수레벨에서만 접근 가능.

함수 레벨 스코프

var a = 'global';
function foo() {
  var b = 'in a function foo';
  console.log(b);
  {
      var c = 'in a block foo';
      console.log(b);
  }
  console.log(c);
}
foo();
function bar() {
  var d = 'in a function bar';
  console.log(d);
  console.log(a);
  console.log(b);
  console.log(c);
}
bar();
// in a function foo
// in a function foo
// in a block foo
// in a function bar
// global
// ReferenceError: b is not defined
// ReferenceError: c is not defined

블록 레벨 스코프

let foo = 'global';
{
  let bar = 'in a block';
  console.log(foo);
  console.log(bar);
}
console.log(foo);
console.log(bar);
// global
// in a block
// global
// ReferenceError: bar is not defined
profile
Figure it out yourself

0개의 댓글