[Javascript] Scope

youngseo·2022년 2월 14일
0

Javascript

목록 보기
4/46
post-thumbnail

scope(유효범위)

JavaSciprt에서의 함수는 선언되는 것과 동시에 자신만의 scope(유효범위)를 가지게 됩니다. 또한 그 함수의 범위에 따라 그 안에 있는 변수의 범위도 결정되게 됩니다.

변수의 범위에 따라 개발자의 의도와는 다르게 동작할 수 있기 때문에 JavaScript에서의 유효범위를 잘 이해하고 사용하는 것이 좋습니다.

Scope(유효범위)

scope는 영역, 범위라는 뜻입니다. 프로그래밍 언어에서의 유효범위는 어느범위까지 참조하는지를 가르킨다고 할 수 있습니다.

함수스코프

프로그래밍을 공부하다보면 함수스코프와 블록스코프라는 단어를 많이 접하게 됩니다. 함수 스코프는 지역스코프에 가까우며 로컬스코프라고도 합니다.

전역스코프(Global)

전역스코프는 가장 쉬우면서도 사실 다루기가 조금 어려운 스코프입니다.
가장 쉬운 이유는 가장 바깥쪽에 있기 때문입니다. 이렇게 바깥쪽에 위치하는 스코프를 전역스코프라고 합니다.

전역스코프 vs 함수스코프

아래 예시를 보며 전역스코프와 함수스코프의 차이에 대해 설명해보도록 하겠습니다.

let foo = 'foo'

{

}

fuction func() {
 console.log(foo)
}

if(true) {
 console.log(foo)        
        }

위의 코드 제일 바깥쪽에 위치하고 있는 let foo='foo'는 전역스코프로, 이 전역스코프는 어디에서나 접근이 가능합니다. 이렇게 어디에서나 접근이 가능하기 때문에 어디에서나 재정의가 가능하다는 문제를 가지게 됩니다.

foo= 'fooooo'

function func(){
  foo='fooo'
}

if(true) {
  foo='fooooooo'
}

cosnole.log(foo) 

위 코드 처럼 foo가 계속해서 재 정의된 경우 console.log(foo)를 통해 출력되는 foo는 프로그래밍이 실행되기 전까지는 어디에서 정의된 값인지를 알기가 어렵습니다.

이렇게 전역스코프를 계속해서 만들게 되면, 프로그래밍의 실행결과 때 내가 만든 변수들이 어떻게 동작했는지 알기도 어렵게 됩니다. 또한 전역스코프에 누구나 접근을 해 재정의를 하는 위험수당을 가지게 됩니다.

하지만 블록스코프의 경우 어디에서나 접근을 하기가 어렵습니다. 안전지대로 스코프 내부의 변수들이 잘 지켜질 수 있습니다.

이렇게 한번 전역스코프를 사용하게 되면 돌이킬 수 없고 예측하기 어려운 프로그래밍을 하게 됩니다. 따라서 함수스코프, 블록스코프를 활용해서 지역스코프 단위로 코드를 작성하는 실력을 계속해서 키우는 것이 중요합니다.

0개의 댓글