[js스코프] 함수스코프 vs 블럭스코프

Sarah·2020년 8월 28일
0

변수의 유효범위를 일컫는 스코프는 es6를 기준으로 나뉜다.

es6 이전 -> 함수 스코프
es6 이후 -> 블럭 스코프

함수에서도 function() {} 중괄호가 있으니 무슨 말인지 잘 이해하지 못하다가 Poiemaweb의 글을 보고 이해하게 되어 기록으로 남긴다.
아래코드는 Poiemaweb의 예시를 가져왔습니다.

var x = 0;
{
  var x = 1;
  console.log(x); // 1
}
console.log(x);   // 1
  • 변수 x의 스코프는 중괄호가 아닌 함수단위이므로, 변수를 감싸고 있는 중괄호는 의미가 없다.
    따라서 1로 덮어 씌어진다.

let y = 0;
{
  let y = 1;
  console.log(y); // 1
}
console.log(y);   // 0
  • 반면, 변수 y의 경우 es6문법인 let으로 선언되었기 때문에 변수의 유효범위가 블럭으로 잡히고, 중괄호 안에서 선언, 할당된 변수는 전역변수y에 아무런 영향을 주지 못한다.
profile
공부 목적으로 개인적으로 정리하는 공간입니다. 혹시 틀린 점이 있다면 댓글로 남겨주시면 감사하겠습니다.✍🤓 💌

0개의 댓글