기반을 다지자 ES6

Variable Scope

Jungsoomin :) 2020. 9. 25. 06:15

자바스크립트 흐름을 이해하는데 유용하다. 즉 유효범위를 뜻한다. 자바의 지역 멤버, 전역 멤버 처럼.

 

  1. 전역 Scope : 전역 변수
  2. 지역 Scope : 지역 변수

 

지역 변수의 생존 범위 일반적으로는

  1. 블록 Scope : {} 범위 안에 선언된 변수는 안에서만 생존한다.
  2. 함수 Scope : 함수 안에 선언된 변수는 함수 안에서만 생존한다.

이 중 Block Scope 는 ES6에서 사용이 가능해졌다.  < let , const 로 인한 변화

 


그럼 자바스크립트의 전역 Scope 는 무엇인가

  1. 어떤 것으로도 둘러싸여있지 않다.
  2. let ,const가 쓰이지 않은 블록스코프다.

2번이 참 신기한데, 이 이야기를 거꾸로 틀어보면 , JavaScriptBlock Scope 를 지원하지 않았다는 것이다.

 

var num = 10;

console.log('전역 변수 ' + num);

function numTest(){
    console.log('함수안에서 출력하는 변수 '+num);
}

numTest();

VM3013:3 전역 변수 10
VM3013:6 함수안에서 출력하는 변수 10

let const 를 제외하면 전부 다 전역스코프 취급된다.

{
    var num = 10;
}

console.log('전역에서 출력 ' + num);

function numTest(){
    console.log('함수에서 출력 ' +num);
}

numTest();


VM3353:5 전역에서 출력 10
VM3353:8 함수에서 출력 10

 


핵심은 전역 변수는 쓰지말라는 것이다. 쓰더라도 값이 변경되지 못하게 해야한다.

 

프로그램이 전역변수로 만들어져있다면, 어느 부분에서 에러가 났을 시에는?

 

전역 변수 하나 때문에 모든 것을 다 갈아 엎어 찾아야할지도모른다.

 

브라우저 디버거에서 Watch 항목에 값을 올려 디버깅할때라던지, 어...찌됬든 디버깅시에 Scope 탭이 분명히 있을 것이다. 꼭 확인하자.

'기반을 다지자 ES6' 카테고리의 다른 글

심화학습 : _proto_ ( prototype )  (0) 2020.10.01
This 에 대한 배경지식 , binding , 전역 객체  (0) 2020.09.28
Function Object  (0) 2020.09.25
Constructor Function  (0) 2020.09.25
Function  (0) 2020.09.25