(자바스크립트) - 스코프(Scope)

2617 단어 JavaScriptJavaScript

Scope란 ?

  • 영어로 범위, 영역이라는 뜻이다.

  • 자바스크립트에서 Scope는 변수의 수명을 의미한다.

  • 전역 스코프(Global Scope), 지역 스코프(Local Scope)로 구분된다.


    전역 스코프

  • 함수의 외부에서의 범위.

  • 이러한 전역 변수는 프로그램의 어느 영역에서나 접근할 수 있으며, 웹 페이지가 닫혀야만 메모리에서 사라진다.

var globScope = 'global';
  function fscope(){

     alert(globScope);
}
fscope();
  • 결과 : 'global'
  • 함수 밖에서 변수를 선언하면 그 변수는 전역변수가 된다.
  • 전역변수는 애플리케이션 전역에서 접근이 가능한 변수이다.

지역 스코프

  • 함수 내부에서의 범위.
  • 함수 내부에서만 유효하며, 함수가 종료되면 메모리에서 사라진다.
function fscope(){
  var num = 10;

     alert(num);
}
fscope();
  • 결과 : 10


  • 자바스크립트에서 지역 변수를 선언할 때에는 반드시 var 키워드를 사용하여 선언해야 한다.

  • 함수 내부에서 var 키워드를 사용하지 않고 변수를 선언하면, 해당 변수는 지역 변수가 아닌 전역 변수로 선언된다.

var vscope = 'global';
 function fscope(){
    vscope = 'local';
       alert('함수 내부'+vscope);
   }fscope();
	alert('함수 외부'+vscope);
  • 결과 : '함수 내부 local'이 먼저 실행됨.


  • 전역변수와 지역변수가 같은 이름으로 정의되었을 때, 지역변수가 호출된다.

var scope = 'global'; //전역변수
  function fscope(){
       var scope = 'local'; //지역변수
       alert(scope);
   }fscope();
  • 결과 : 'local'

렉시컬 스코프(Lexical Scope)

  • 자바스크립트는 함수가 선언된 시점에서의 유효범위를 갖는다.
  • 이러한 유효범위의 방식을 정적 유효범위(static scoping) 혹은 (lexical scoping) 이라고 한다.
  • 즉, 함수를 어디서 선언했는지에 따라 상위 스코프를 결정한다.
var i = 5;
  function a(){
      var i=10;
      b();
  }
  function b(){
      alert(i);
  }a();
  • 함수 b 에 지역변수가 존재하지 않아서 전역 변수를 찾는다.
  • 함수 b가 선언된 시점에서 i의 전역변수는 var i = 5 이다.
  • 따라서 결과는 5 이다.

출처
http://tcpschool.com/javascript/js_function_variableScope
https://www.inflearn.com/course/%EC%A7%80%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%96%B8%EC%96%B4-%EA%B8%B0%EB%B3%B8/lecture/2524?tab=curriculum
개인공부

좋은 웹페이지 즐겨찾기