스코프

pssw0728·2022년 1월 17일
0

스코프의 구분

자바스크립트에서 스코프는 전역스코프와 지역스코프로 나뉘어 진다.

전역 스코프는 코드 어디든 참조할 수 있고 지역 스코프는 함수 코드 블록이 만든 스코프와 그 하위 함수에서만 참조가 가능하다. 변수도 마찬가지로 전역변수와 지역변수로 나뉘어 진다.

변수는 선언 위치에 의해 스코프를 가진다.

자바스크립트 스코프의 특징

자바스크립트는 다른 언어의 블록 레벨 스코프와는 다른 함수 레벨 스코프를 따른다.
블록 레벨 스코프 같은 경우 코드 블록 {...} 내에서 유효한 스코프를 의미하고
함수 레벨 스코프는 함수 코드 블록 내에서만 유효하고 함수 외부에서는 유효하지 않다.
하지만 ECMAScript 6에 도입된 let 를 사용하면 블록 레벨 스코프를 사용할 수 있다.

전역 스코프(Global scope)

var global = 'global';

function foo() {
  var local = 'local';
  console.log(global);
  console.log(local);
}
foo();

console.log(global);
console.log(local); // Uncaught ReferenceError: local is not defined

전역에 변수를 선언하면 이 변수는 어디서든지 참조할 수 있는 전역 스코프를 갖는 전역 변수가 된다.
변수 global은 함수 영역 밖의 전역에서 선언되었다.

비 블록 레벨 스코프

if (true) {
  var x = 5;
}
console.log(x);

자바스크립트는 블록 레벨 스코프를 사용하지 않으므로 함수 밖에 선언된 변수는 코드 블록{...} 내에서 선언되었다할지라도 모두 전역 스코프를 갖게 된다.

함수 레벨 스코프

자바스크립트는 함수 레벨 스코프를 사용하는데 함수 내에서 선언된 매개변수와 변수는 함수 외부에서는 유효하지 않지만 반대로 함수 외부에 선언된 전역변수는 내부함수에서 참조하는 것이 가능하다.

profile
개발위키겸 개발관련 콘텐츠에 대한 경험을 기록하는 곳

0개의 댓글