S1_U9_CH2. 스코프

Judevv·2023년 5월 2일
0

Chapter 2. 스코프

학습 목표

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

2-1. 스코프와 주요 규칙

  • 스코프

    • 변수에 접근할 수 있는 범위(변수 접근 규칙에 따른 유효 범위)

    • 중괄호(블록) 안쪽에 변수가 선언되었는가, 바깥쪽에 변수가 선언되었는가가 중요

    • 범위는 중괄호(블록) 또는 함수에 의해 나누어짐

      • 바깥쪽 스코프에서 선언한 변수는 안쪽 스코프에서 사용 가능
      • 안쪽에서 선언한 변수는 바깥쪽 스코프에서 사용할 수 없음

  • 스코프 주요 규칙

    1. 안쪽 스코프에서 바깥쪽 스코프로는 접근할 수 있지만 반대는 불가능
    2. 중첩이 가능
      • 바깥쪽 스코프는 전역 스코프(Global Scope), 다른 스코프는 전부 지역 스코프(local scope)
      • 지역 스코프에서 선언한 변수는 지역 변수, 전역 스코프에서 선언한 변수는 전역 변수
    3. 지역 변수는 전역 변수보다 더 높은 우선순위를 가짐

2-2. 변수 선언과 스코프

  • 스코프의 종류

    • 중괄호를 기준으로 범위가 구분됨
    • 블록 스코프(block scope), 함수 스코프(function scope)
      • function 키워드가 등장하는 함수 선언식 및 함수 표현식은 함수 스코프를 만듦
      • 화살표 스코프는 블록 스코프 취급!!!!
  • 블록 스코프(block scope)

    • 블록 스코프 안에서 정의된 변수는 블록 범위를 벗어나는 즉시 접근할 수 없음
      • var 키워드는 블록 스코프를 무시(권장하지 않음)
  • let, var, const 키워드 비교

    • 유효 범위에 큰 차이가 있음!!!!
    letconstvar
    유효 범위블록 스코프 및 함수 스코프블록 스코프 및 함수 스코프함수 스코프
    값 재할당가능불가능가능
    재선언불가능불가능가능

2-3. 변수 선언할 때 주의할 점

  • window 객체
    • 브라우저에만 존재
    • 브라우저의 창(window)를 의미하지만, 전역 영역을 담고 있음
    • 함수 선언식으로 함수를 선언하거나, var로 전역 변수를 만들면, window 객체에서도 동일한 값을 찾을 수 있음
  • 전역 변수
    • 가장 바깥 스코프에서 정의한 변수 (어디서든 접근 가능)
    • 전역 변수를 많이 만드는 것은 좋은 선택 아님
    • side effect를 줄여야 함
      • side effect는 똑같은 이름으로 전역 변수를 선언하려고 했을 때 생기는 문제
    • 전역 변수를 var로 선언하는 것은 브라우저 내장 기능을 사용하지 못하게 할 수 있음(let, const 사용 권장)
  • 선언 없이 변수를 할당하지 않기
    • var로 선언한 전역 변수처럼 취급됨
  • Strict mode
    • js 파일 상단에 'use strict'라고 입력(따옴표 포함)
    • 브라우저가 미리 방지하게 함
profile
감성있는 개발자를 꿈꿔요

0개의 댓글