JavaScript : Scope

권지현·2022년 1월 24일
0
post-thumbnail

Scope Chain 이란?

: 전역 객체와 중첩된 함수의 스코프의 레퍼런스를 차례로 저장하고, 의미 그대로 각각의 스코프(범위)가 어떻게 연결(chain)되고 있는지 보여주는 것

쉽게 말하자면, 작성한 함수가 실행되는 과정에서 해당 함수 범위(scope) 내에 요청한 변수의 값을 찾을 수 없다면 선언된 함수 중 가장 가까운 위치의 변수를 찾아서 값을 반영한다.

코드로 비교해서 간단히 보자면

// 같은 변수 A라도 number함수 내의 A 반영.
const A = 123;

function number(alpha){
  
  const A = 456;
  if(alpha === A){
    return A.toString() 
  } else{
    return alpha
  }
}
number(456)  //결과 : "456" (문자)

number 함수 내 변수 'A'의 값 456과 제시된 'alpha'의 값이 456으로 동일하기 때문에 A.toString()의 메서드를 받아 결과값으로 문자열 "456"이 도출된다.

//number 함수 내에 변수 A에 대한 값이 없지만 함수 근처에 동일한 변수 A의 값을 반영
const A = 123;

function number(alpha){
  
  const b = 456;
  if(alpha === A){
    return A.toString()
  } else{
    return alpha
  }
}

number(456)  // 결과 : ⭐️ 456(숫자) 

number 함수 내 제시된 변수 'A'를 확인할 수 없기 때문에 스코프 체인으로 근처의 동일한 이름의 'A' 변수값을 반영한다.
A값 123과 'alpha'값 456이 다르기 때문에 alpha값을 결과로 도출, 숫자 456이 결과값이 된다.

profile
FE 개발자 성장 기록 👩🏻‍💻

0개의 댓글