자바스크립트 ) Scope

Jeong-Taek·2022년 10월 22일
0

Scope?

스코프는 '참조 대상 식별자'를 찾아내기 위한 규칙이다.
#참조대상 식별자란 변수, 함수의 이름과 같이 어떤 대상을 다른대상과 구분하여 식별할 수 있는 유일한 이름이다.

var x = 'global';

function test () {
  var x = 'function scope';
  console.log(x);
}

test(); // function scope
console.log(x); // global

Scope 구분

  • 전역 스코프 : 코드 어디에서든지 참조 가능
  • 지역 스코프 : 함수코드 블록이 만든 스코프로 함수 자신과 하위 함수에서만 참조 가능

변수 관점에서 스코프 구분하기

  • 전역 변수 : 전역에서 선언된 변수이며 어디에든 참조 가능
  • 지역 변수 : 지역함수 내에서 선언된 변수이며 그 지역과 그 지역의 하부 지역에서만 참조 가능

변수는 선언 위치에 의해 스코프를 가진다. 전역에서 선언된 변수는 전역 스코프를 갖는 전역변수이고, 지역에서 선언된 변수는 지역 스코프를 갖는 지역변수가 되는 것이다.

전역 스코프를 갖는 전역 변수는 전역에서 참조 가능
지역에서 선언된 지역변수는 그 지역과 그 지역의 하부 지역에서만 참조가 가능하다.

자바스크립트 스코프 특징

  • 함수레벨 스코프 : 함수 블록 내에서 선언된 변수는 함수 코드 블록 내에서만 유효하고 함수 외부에서는 유효하지 않다.
  • ES6에서 도입된 let키워드를 사용하면 블록 레벨 스코프 사용이 가능하다.

전역 스코프

  • 전역에 변수를 선언하면 어디서든지 참조할 수 있는 전역 스코프를 갖는 전역변수가 됨.
  • var키워드로 선언한 전역 변수는 전역 객체 window의 프로퍼티다.
  • 전역 변수의 사용은 변수 이름이 중복될 수 있고, 의도치 않은 재할당에 의한 상태 변화로 코드를 예측하기 어렵게 만드므로 사용을 억제해야 한다.

비 블록 레벨 스코프

  • 함수 밖에서 선언된 변수는 코드 블록 내에서 선언되었다할지라도 모두 전역 스코프를 갖게됨.

0개의 댓글