[JavaScript] Scope

Baoro·2022년 2월 1일
0

JavaScript 기본개념

목록 보기
6/9
post-thumbnail

Scope란?

변수의 수명.
즉, 변수가 어디까지 쓰일 수 있는지에 범위를 의미한다.


전역변수 vs 지역변수

전역변수란?
주어진 프로그램 어디에서나 접근이 가능한 변수.

지역변수란?
프로그램 내 변수가 선언된 영역에만 접근 가능한 영역으로 취하는 변수.

예를 들어보자.

var vscope = 'gloabl';
function fscope(){
	var vscope = 'local';
    alert(vscope);
}
fscope();

우선 이 코드는 fscope라는 함수 안과 밖에서 vscope라는 변수를 선언하고 함수 밖에서는 'global', 함수 안에서는 'local' 할당했다.
결과는 'local'알람이 뜨는 것이다.
왜일까?
alert(vscope)가 함수내에 존재하기 때문에 함수 내에 있는 var vscope = 'local'가 우선순위가 높은 것이다.
만약 var vscope='local'이 없으면 'global'알람이 뜰 것이다.

이번엔 이 코드를 살펴보자

var vscope = 'gloabl';
function fscope(){
	var vscope = 'local';
}
alert(vscope);

이 코드에서는 결과값이 'global'이다. 함수내에 변수가 있지만 이 변수는 함수내에서만 접근이 가능하기 때문이다.
정리하면
var vscope='gloabl' 은 전역변수이고
var vscope='local'은 지역변수이다.


Scope 오염

그렇다면 지역변수는 쓰지말고 전역변수만 쓰면 되는거 아닌가? 라는 생각을 할 수도 있다.
block이 끝다면 살아있지않은 지역변수에 비해 프로그램이 종료될 때까지 살아있는 전역변수는 변수값이 계속 변한다면 트래킹하기도 어렵고 이 변수가 어디서, 왜 필요한지 알기도 힘들어진다.
따라서 전역변수의 사용은 최대한 줄여서 변수가 중복해서 사용되는 것을 막아야한다.

profile
꾸준히.... 깔끔하게.... 끝까지....

0개의 댓글