ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Section 3. 자바스크립트 블록문과 스코프
    자바스크립트 2023. 3. 23. 16:56

    블록문이란?

    {
      console.log('블록문');
    }
    • 0개 이상의 statement들을 묶은 단위다.
    • 제어문, 함수 등에 사용된다.
    • 새로운 스코프를 생성한다.

    그렇다면 스코프란? scope?

    범위를 말한다. 일반적으로 변수를 어느 범위까지 쓸 수 있는가? 에대한 범위라고 생각하면 편하다.

    { //블록안에 선언된 변수와 상수를 밖에서 사용 불가
      const x = 'Hello';
      let y = 'world!';
      console.log(x, y);
    }
    
    console.log(x); //애러
    console.log(y); //애러
    
    
    let x = 1;
    
    {//블록 안쪽에서는 바깥의 것 사용 가능
      let y = 2;
      console.log(x, y);
    }
    console.log(x);
    console.log(y); //애러

    추가로 블록 안쪽에 변수나 상수가 새로 선언되면 바깥 것을 덮어쓴다는점을 꼭 기억하자.

     

    스코프체인이란? scope chain

    어떤것이 들어와서 쌓이는걸 스택 stack 이라 한다. 

    let a = 0;
    let b = 1;
    let c = 2;
    console.log('시점 1:', a, b, c); //0 1 2
    
    {
      let a = 'A';
      let b = 'B'
      console.log('시점 2:', a, b, c); //A B 2
    
      {
        let a = '가'
        console.log('시점 3:', a, b, c);// 가 B 2
      }
    
      console.log('시점 4:', a, b, c);// A B 2
    }
    
    console.log('시점 5:', a, b, c); // 0 1 2

    블럭 안에 해당 변수/상수가 없으면 바깥쪽으로 찾아 나가는 것을 볼 수 있다. 이것을 체이닝 이라 하고 후입선출 즉, 나중에 온 것이 먼저 나가는 특성을 가지고 있다. 

     

    마지막으로 메모리에서의 관점에서 살펴보자.

     

    전역(global) 변수/ 상수  *전역변수 사용은 최소화하는 것이 좋다. 영향을 미치는 범위가 매우 넓기 때문이다. 

    • 데이터 영역에 위치
    • 코드 어느 곳에서듣 접근 가능
    • 프로그램 종료시 소멸

    지역(local) 변수/상수 *변수나 상수는 가능한 사용할 블록 내에서 선언하는 것이 좋다. 메모리가 절약되기 때문이다. 

    • 스택 영역에 위치
    • 해당 블록 안에서만 접근 가능
    • 블록 실행 종료시 소멸
Designed by Tistory.