Minwoo Dev.

[JavaScript] 유효 범위(Scope) 본문

JavaScript

[JavaScript] 유효 범위(Scope)

itisminu 2024. 1. 16. 22:29
728x90
반응형
SMALL

유효 범위(Scope) 

JavaScript에서 유효범위란 말 그대로 해당 변수가 유효한 범위를 의미한다.

 

 

전역 변수(Global Scope)와 지역 변수(Local Scope)의 유효범위(Scope)

Javascript에서 전역변수는 가장 바깥쪽, 즉 어떤 함수나 객체에도 속해있지 않은 바깥쪽에서 선언된 변수를 뜻한다.

 

전역변수의 예

let global = 2; // 전역변수!!
for (let i = 0; i < 10; i++) {
    let local = 5;
    console.log(i * 5);
}

 

위 코드에서는 global이 전역변수이다.

그에 비해 for문 안에 속한 local은 지역변수라고 할 수 있다.

 

지역변수는 함수, 객체 등에 속해있어서 그 객체의 범위만큼만 데이터가 유효하다.

 

지역변수의 예

function whatisnum() {
    let num = 4; // 지역변수!!
    console.log(num);
}

whatisnum();

 

위 코드에서 num은 함수 내부에 존재하고, 함수 밖에서는 접근할 수 없다. 

이것이 지역변수이다.

 

 

 

 

만약에 지역변수와 전역변수가 같이 있을 때, 출력을 한다면 어떤 변수의 값을 참조해올까 ?

var num = 10;

function whatisnum() {
    var num = 4;
    console.log(num);
}

whatisnum();

 

위처럼 예시를 작성했다.

num이라는 변수가 전역변수로도 선언이 되어있고, whatisnum 함수 내부의 지역변수로도 선언되어있는 상황이다.

 

여기서 console.log는 어떤 것을 출력하게 될까 ?

 

결과

 

정답은 4 이다. 지역변수로 선언된 값을 참조한 것이다.

 

 

변수의 값을 참조할 때, 가까이에 있는 값부터 참조하게 된다.

만약에 지역변수인 num이 없었다면, 전역변수의 num의 값이 참조되어 10이라는 값이 출력되었을 것이다.

 

사소하지만 전역변수와 지역변수를 구분지어 두는 이유는 전역변수를 사용했을 때 발생할 수 있는 문제점이 상당히 많기 때문이다.

데이터 관리와 코드 효율성 관점에서 전역변수를 사용하지 않고 작성하는 것이 유리하다.

 

 

 

전역변수를 사용하지 않고 코드를 작성하는 방법 중 하나가 클로저(Closure)라는 건데, 이전의 게시글을 첨부하겠다.

https://lmw1119.tistory.com/entry/JavaScript-%ED%81%B4%EB%A1%9C%EC%A0%80Closure

 

[JavaScript] 클로저(Closure)

클로저(Closure) Javascript에서 클로저(Closure)는 함수의 내부 범위에서 함수 외부 범위의 변수를 보호하는 데 사용되는 형태이다. 예를 들어 아래와 같은 함수가 있다고 하자. let num = 5; function minustwo(

lmw1119.tistory.com

 

728x90
반응형
LIST