김 양의 멋따라 개발따기

Javascript Scope 본문

Javascript

Javascript Scope

개발따라김양 2022. 11. 5. 11:15

1. 스코프란?

  • 스코프는 참조 대상 식별자(identifier, 변수, 함수의 이름과 같이 어떤 대상을 다른 대상과 구분하여 식별할 수 있는 유일한 이름)를 찾아내기 위한 규칙이다. 자바스크립트는 이 규칙대로 식별자를 찾는다.
  • 식별자는 자신이 어디에서 선언됐는지에 의해 자신이 유효한(다른 코드가 자신을 참조할 수 있는) 범위를 갖는다.
  • 스코프는 식별자 이름의 충돌을 방지한다.
  • 스코프는 또한 계층적인 구조를 가지기 때문에 하위 스코프는 상위 스코프에 접근할 수 있지만 반대는 불가하다.

 

2.  스코프의 구분

전역 스코프 (Global scope) 지역 스코프 (Local scope or Function-level scope)
코드 어디에서든지 참조 가능 함수 코드 블록이 만든 스코프
함수 자신과 하위 함수에서만 참조 가능

3. 자바스크립트 스코프의 특징

블록 레벨 스코프(block-level scope) 함수 레벨 스코프(function-level scope)
코드 블록({…})내에서 유효한 스코프 함수 코드 블록 내에서 선언된 변수는 함수 코드 블록 내에서만 유효
  • 대부분의 C-family language는 블록 레벨 스코프(block-level scope)를 따른다.
    블록 레벨 스코프란 코드 블록({…})내에서 유효한 스코프를 의미한다.
    여기서 “유효하다”라는 것은 “참조(접근)할 수 있다”라는 뜻이다.
  • 자바스크립트는 함수 레벨 스코프(function-level scope)를 따른다.
    함수 레벨 스코프란 함수 코드 블록 내에서 선언된 변수는 함수 코드 블록 내에서만 유효하고
    함수 외부에서는 유효하지 않다(참조할 수 없다)는 것이다.
  • 단, ECMAScript 6에서 도입된 let keyword를 사용하면 블록 레벨 스코프를 사용할 수 있다.

'Javascript' 카테고리의 다른 글

Javascript 돔(DOM)과 가상돔(Virtual DOM)  (0) 2022.11.11
Javascript - 렉시컬 환경(Lexical Environment)  (0) 2022.11.07
Javascript 콜백함수  (0) 2022.11.03
Javascript 호이스팅(Hoisting)  (0) 2022.11.03
Javascript var, let, const  (0) 2022.11.01