스코프 (Scope)

Mintaek·2022년 8월 9일
0

JavaScript

목록 보기
3/8
post-thumbnail

🔎 스코프란?

스코프

👉 스코프의 정의는 “식별자 접근 규칙에 따른 유효 범위”이다

  • 전역에 선언된 변수는 어디에든 참조할 수 있다. 하지만 함수 내에서 선언된 변수는 함수 내부에서만 참조할 수 있고 함수 외부에서는 참조할 수 없다. 이러한 규칙을 스코프 라고 한다.
  • 범위는 중괄호(블록)와 함수에 의해 나눠진다
  • 그래서 각각 Block Scope 와 Function Scope라고 부른다.

전역 변수와 지역 변수

  • 전역 변수
    👉 전역스코프 ( GlobalScope )에서 선언된 변수, 어디에든 참조 가능

  • 지역 변수
    👉 지역스코프 ( Local scope or Function-level scope) 내에서 선언된 변수, 그 지역과 그 지역의 하부 지역에서만 참조 가능.
  • 전역 변수의 사용은 변수 이름이 중복될 수 있고, 의도치 않은 재할당에 의한 상태 변화로 코드를 예측하기 어렵게 만드므로 억제 하여야 한다.

var, let, const

👉 const 키워드

  • 유효 범위 : 블록 스코프 / 함수 스코프
  • 값 재할당 : 불가능
  • 재선언 : 불가능

👉 let 키워드

  • 유효 범위 : 블록 스코프 / 함수 스코프
  • 값 재할당 : 가능
  • 재선언 : 불가능

👉 var 키워드

  • 유효 범위 : 함수 스코프
  • 값 재할당 : 가능
  • 재선언 : 가능

❗️ 블록 단위로 스코프를 구분했을 때, 훨씬 더 예측 가능한 코드를 작성할 수 있으므로
   let 키워드의 사용이 권장된다.

스코프체인

높은 망루에선 낮은 위치의 성채 내부와 바깥에 뭐가 있는지 관찰(참조)할 수 있다. 그러나 성벽에 시야가 가리기 때문에 바깥에서 내부를 관측할 수 없다.

함수의 코드 블럭은 성벽과 같다. 코드 블럭 안쪽에 있을 수록 바깥을 관측할 순 있지만 코드 블럭 바깥에서 내부의 변수를 참조할 순 없다.

블록 스코프에서 지역 변수 y는 전역 변수 x값을 참조할 수 있고, 반환되는 함수의 지역 변수z는 y의 값을 참조할 수 있다.

높은 망루(내부 코드 블럭)에 있더라도 완전히 다른 코드 블럭에 속해있는 지역 변수를 참조할 순 없다. 코드 블럭의 실행은 독립적이며 실행이 끝나면 더 이상 참조할 수 없기 때문에 더욱이 다른 위치에서 참조할 수 없다.

자신이 속해있는 지역의 변수들을 참조할 수 있게 되며, 해당 코드 레벨에 참조값이 없다면 상위 레벨의 스코프로 참조 값을 찾아 나가는 현상을 스코프 체인(Scope Chain)이라고 한다.
전역 스코프에도 참조값이 없다면 null을 반환하게 된다.

출처

profile
Slow and Steady Wins the Race

0개의 댓글