본문 바로가기

개발일지

javascript에서 scope란?

일시 : 2017. 4. 22(토)


목적 : javascript에서 scope란 무엇일까?


수행결과 :


이 내용을 공부하게 된 이유는 javascript를 더 잘알게 되면 더 좋은 프로그램을 만들수 있을거라는 생각으로 시작을 하였다. (어디에 도움이 될지 예상을 못했다.)

결과적으로 알게된 부분은 이제서야 javascript를 오류를 내지 않고서 프로그램을 짜게 될 수 있을거 같다. 


1. 변수의 유효범위 ( 코딩 학습시 배운 scope 내용 )

 

 지역변수

전역변수 

발생경우 

함수 안에서 변수를 선언 

함수 밖에서 변수를 선언

var를 붙이지 않고 변수 선언 

유효범위 

함수가 종료될 떄까지 

프로그램이 종료될 때까지.

 



2. scope 란? 

 프로그램에서 scope란 변수를 정의해 놓은 집합.

 

 이것을 알려면 어떻게 해서 만들어 지는지를 알아야 조금더 자세히 알 수 있다.


 2-1. scope의 선언 과정 

 js 컴파일 과정을 거칩니다.(인터프리터 언어 이긴한데... )

 컴파일 과정을 거치면서 변수 목록을 작성 합니다.

 

 그리고 해당값의 유효 범위는 실행과정(엔진)에서 정의되어 집니다. 


 2-2. scope의 사용 과정

 용례를 2가지로 분류 하여 사용 합니다.

  - 변수를 찾는 경우(LHS) 

  - 변수의 갑을 찾는 경우(RHS)

  

 그리고 해당 범위에 값이 없을경우 전역변수 or 프로그램 끝까지 변수가 있는지 찾습니다.



3. 어떻게 사용해야 될까요?

 you don't know javascript 에서는 직접적인 사용방법이 언급되어 있지 않습니다. 하지만 추론해 보면 

 1. 사용하지 않는데 선언된 변수의 경우 scope에 공간을 차지 하고 있다. 

 2. 전역변수 혹은 자신의 함수안에 없는 변수의 경우 찾는데 많은 시간을 소요 한다. (함수안에서 변수를 찾을수 있으면 그렇게 하자.)



참조1. You don't know javascript (https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20%26%20closures/ch1.md)

참조2. 양양블로그 (http://yanghyeryung.github.io/jekyll/update/scope/)

참조3. w3school javascript scope (https://www.w3schools.com/js/js_scope.asp)