Block Scope

minho·2021년 12월 12일
0

함수스코프란 무엇인가?

scope란 범위, 유효공간, 허용공간을 뜻한다.
그렇다면 함수스코프란 무엇인가?
함수스코프란 함수에 의해서 생기는 범위를 말한다.
ES5까지는 변수의 유효범위가 함수에 의해서만 발생할 수 있었다.
그러나 ES6로 넘어오면서 블락스코프(Block Scope)란게 탄생하였다.
그렇다면 블락스코프(Block Scope)란 무엇일까?

블락스코프(Block Scope)란?

함수스코프가 함수에 의해 생기는 범위인것처럼 블락스코프는 블락에 의해 생기는 유효범위를 말한다.
그럼 블락이 무엇일까?

{
  let a = 10
  {
    let a = 20
    //#1
    console.log(a)
  }
  //#2
  console.log(a)
}
//#3
console.log(a)

여기서 {} 중괄호 이것을 블락이라 부른다.
즉, { }에 의해서 변수의 유효범위가 결정된다.

각각 #1,2,3의 출력결과는 어떨까?
위의 사항을 함수로 표현하면 아래와 같다.

(function one () {
	var a = 10;
	(function two () {
    	var a = 20;
      	//#1
      	console.log(a);
    })();
  	//#2
    console.log(a);
})();
//#3
console.log(a);

#1은 함수two에 속해있다. 그러므로 함수 two안에서 a의 값을 찾으려 할 것이다. 그러므로 a=20이 출력된다.
#2는 함수one에 속해있다. 그러므로 함수 one안에 서 a의 값을 우선으로 찾는다. 그러므로 a=10을 출력한다.
#3은 어느 함수에도 속하지 못한다. 스코프체인에 의해서 현재 위치보다 더 밑에 있는 값은 찾을 수 없다. 그러므로 a는 undefined를 출력한다.

스코프체인에 대한 자료:https://velog.io/@minho100227/실행-컨텍스트Execution-Context

profile
Live the way you think

0개의 댓글