본문 바로가기

Kakao Cloud School/카카오클라우드스쿨 수업

[Javascript] 스코프

스코프(Scope)


식별자가 유효한 범위를 의미한다.

스코프 체인(Scope chain)

자바스크립트 엔진이 identifier을 찾을 때 사용하는 매커니즘을 의미한다.

모든 스코프는 global 스코프와 연결되어 있다.

Javascript 엔진은 코드를 실행할 때 Context(문맥)을 고려해서 실행한다

현재 실행중인 코드가 어디에 있는 코드이고 코드 주변 정보를 파악해서 실행한다는 의미이다.

lexical Environmentexecution context

거의 대부분의 언어(Javascript포함)는 Lexical Scope를 사용한다

동적스코프 Dynamic Scope 함수가 호출되었을 때, scope를 함수가 호출된 곳을 기준으로 설정
정적 스코프 Static Scope, Lexical Scope 함수가 호출되었을 때, scope를 함수가 정의된 곳을 기준으로 설정

 

var x = 1; // 전역 scope의 전역 변수

function foo(){
    var x = 10; // 지역 scope의 지역 변수
    bar();
}

function bar(){
    console.log(x); // 1
}

foo();

전역변수


전역변수의 단점

1. 가독성이 나빠진다. (오류의 여지가 많다)
2. 메모리 resource를 많이 소모한다.
3. 스코프 체인의 최상단에 있기 때문에 변수를 늦게 찾아 효율이 좋지 못하다.
4. 다른 파일들과 변수 충돌할 여지가 있다.

 

※ 가능한 전역 변수의 사용을 줄이는 것이 좋다. (즉시 실행 함수(IIFE)를 이용하여 문제 해결을 할 수 있다)

 

 

'Kakao Cloud School > 카카오클라우드스쿨 수업' 카테고리의 다른 글

[Javascript] 데이터 타입  (0) 2022.07.05
[Javascript] History of Javascript, ES6  (0) 2022.07.05
[Javascript] 객체(2)  (0) 2022.07.05
[Javascript] 함수  (0) 2022.07.05
[Javascript] 객체  (0) 2022.07.05