Javascript) Scope / 지역 변수 / 전역 변수

김다운·2022년 2월 26일
0

js

목록 보기
1/3

참고 글

Scope

범위를 뜻하는 단어로 변수 접근 규칠에 따른 유효범위를 말함. 변수는 어떠한 환경 내에서만 사용이 가능하다. 자바스크립트는 기본적으로 함수가 선언되고 자신만의 Scope를 갖는다.

로컬 변수(지역 변수)


let x = 'global';

function foo(){
	let x = 'function scope';
  	console.log(x)
}

foo(); // => 'function scope'
console.log(x); // => 'global'

자바스크립트에서는 중괄호{}로 감싼 코드를 블록문(Block Statement)라고 부른다. 블록문 안에 선언된 변수를 로컬 변수 혹은 지역 변수(Local variable)라고 부른다. 로컬변수는 블록문 내에서만 사용할 수 있는 변수이다. foo 함수 안에 있는 변수 x의 scope 유효한 범위는 foo 함수 안 까지 만이다.

글로벌 변수(전역 변수)

let x = 3;
function foo(){
	console.log(x)
}
foo() // => 3
console.log() // => 3

블록문 밖에서 선언한 변수는 불록문 안에서도 사용할 수 있는데 이런 변수를 글로벌 변수 혹은 전역변수하고 부른다.

let x = 3;
function foo(){
  	let x = 5;
	console.log(x)
}
foo() // => 5
console.log() // => 3

함수 내부에서 같은 이름으로 다시 변수를 선언할 경우 스코프에 걸려 함수 내부에 있는 x 변수를 출력한다. 즉 블록문 내부에서 선언된 지역 변수가 있는지 먼저 확인하고 있으면 그 지역 변수를 사용하고 없을 경우 전역 변수를 사용한다.

Local Scope vs Global Scope

  1. 모든 변수에서 scope를 나누는 기준은 {} 블록문이다.
  2. 로컬 변수는 블록 내에서만 유효한 scope를 가지고 있고 글로벌 변수는 어디서나 유효한 scope를 가지고있다.
  3. 블록문 내에서 변수를 사용하려고 하면 로컬 변수를 먼저 찾아서 사용하고 없을 경우 글로벌 변수를 사용한다.
  4. 안쪽 scope에서 바깥 변수나 함수에서 접근이 가능하지만 바깥쪽(global) scope에서 안쪽(local) 변수나 함수에는 접근 할수없다
  5. scope는 중첩할 수 있다.
  6. 지역변수는 함수 내에서 전역 변수보다 더 높은 우선순의를 가진다.
profile
열려 있는 FE 개발자

0개의 댓글