김 양의 멋따라 개발따기
Javascript Scope 본문
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 |