노트 #23 | 스코프

HyeonWooGa·2022년 7월 11일
0

노트

목록 보기
24/74

개요

변수의 유효범위, 변수 접근 규칙


학습 목표

  • 스코프의 의미와 적용 범위를 이해한다.
  • 스코프의 주요 규칙을 이해한다.
  • 전역 스코프와 지역 스코프의 차이를 이해한다.
  • block scope와 function scope의 차이를 이해한다.
  • 변수 선언 키워드 (let, const, var)와 스코프와의 관계를 설명할 수 있다.
  • 전역 객체가 무엇인지 설명할 수 있다.

스코프 개요

  • "변수 접근 규칙에 따른 유효 범위"입니다.
  • 범위가 중괄호(블록) 또는 함수에 의해 나누어집니다.

기본규칙

  • 바깥쪽 스코프에서 선언한 변수는 안쪽 스코프에서 사용 가능합니다.
  • 안쪽 스코프에서 선언한 변수는 바깥쪽 스코프에서 사용 불가능합니다.
  • 스코프는 중첩이 가능합니다.
    // 간단한 예시
    
    let a;  // a 사용가능
    function anything1() {
      let b;  // a, b 사용가능
      function anything2() {
        let c;  // a, b, c 사용가능
        function anything3() {
          let d;  // a, b, c, d 사용가능
        }
        // a, b, c 사용가능
      }
      // a, b 사용가능
    }
    // a 사용가능

전역 스코프와 지역 스코프

  • 가장 바깥쪽의 스코프는 전역 스코프(Global Scope)라고 부릅니다.
  • 전역이 아닌 다른 스코프는 전부 지역 스코프(Local Scope)입니다.

스코프의 종류와 변수 선언 키워드 (let, const, var)

  • 스코프는 두 가지 종류가 있습니다.
    1. 블록 스코프(block scope) : 중괄호 기준으로 범위가 구분됩니다. ( if문, for문 등 )
    2. 함수 스코프(function scope) : 함수 선언식 및 함수 표현식은 함수 스코프를 만듭니다.
    • 화살표 함수는 블록 스코프로 취급됩니다.
  • 변수 선언 키워드 비교
    • var
      • 블록 스코프를 무시하고 함수 스코프만 따릅니다. (화살표 함수의 블록 스코프는 무시하지 않습니다.)
      • 변수 재선언이 가능합니다.
      • 값(value) 재할당이 가능합니다.
      • 훨씬 더 예측 가능한 코드를 작성할 수 있는 let 키워드 사용이 권장됩니다.
    • let
      • 블록 스코프를 무시하지 않습니다.
      • 변수 재선언이 불가능합니다.
      • 값(value) 재할당이 가능합니다.
      • 값을 새롭게 할당할 일이 없다면 보다 안전한 프로그램을 위해 const 키워드 사용이 권장됩니다.
    • const
      • 블록 스코프를 무시하지 않습니다.
      • 변수 재선언이 불가능합니다.
      • 값(value) 재할당이 불가능합니다.

변수 선언시 주의점

  • 전역 변수가 많을 경우 side efeect 문제가 발생할 수 있으니 꼭 필요할때만 전역 변수로 선언합니다.
  • var 키워드는 블록 스코프 무시, 재선언 가능 등의 문제가 있으므로 letconst 를 주요 사용합니다.
  • 선언 없이 변수를 할당하면 해당 변수는 var 로 선언한 전역 변수처럼 취급되므로 선언 없이 변수를 할당하지 않습니다.
  • 위의 문제점들을 js 파일 상단에 'use strict' 라고 입력하여 Strict Mode 를 적용하여 방지할 수 있습니다.
profile
Aim for the TOP, Developer

0개의 댓글