JavaScript Scope란?
Scope [ skoʊp ]1 (무엇을 하거나 이룰 수 있는) 기회[여지/능력] (=potential)2 (주제조직활동 등이 다루는) 범위3 샅샅이[자세히] 살피다.
스코프는 “유효 범위"로써 번수에 매개변수가 어디까지 유효한지를 나타냅니다.
자바스크립트에선 스코프는 2가지 타입이 있습니다. 바로 Global(전역)과 Local(지역)인데요. 함수 안에서 선언된 변수(Local 변수)는 함수 블록 안에서만 접근이 가능합니다.전역 변수는 어디서든 접근이 가능합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
// global 변수 선언
var a = 10;
console.log("global a: ", a) // 10
// local 변수 선언
function print() {
var b = 20;
if (true) {
var c = 30;
}
console.log("local b: ",b) // 20
console.log("local c: ",c) // 30
}
print()
console.log("local b: ",b) // ReferenceError: b is not defined
// ✨ Point
// b는 print함수 안에서 선언된 local 변수 임으로
// print함수가 동작하는 안에서는 존재하지만,
// print함수 밖에서는 존재하지 않습니다.
|
스코프는 렉시컬(Lexical)과 다이나믹(Dynamic)으로 분류.
렉시컬(Lexical) 스코프는 코드를 작성하는 시점에 스코프가 결정되어진다고 해서 정적 스코프라고도 부릅니다. Javascript는 대표적인 렉시컬 스코프입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
var a = "Global"
function print1() {
console.log(a);
}
function print2() {
var a = "Local";
print1();
}
print1() // Global
print2() // Global
// print2에서 a를 "Local"로 재할당 했지만,
// print1()이 시작되면서 a는 print2()를 벗어나게 되고
// a는 "Global"로 돌아가게된다.
|