변수(혹은 함수)의 유효 범위
주요 스코프 종류
전역 스코프 (Global Scope)
코드 전체에서 접근 가능
브라우저에선 window 객체가 전역 환경.함수 스코프 (Function Scope)
함수 내부에서만 접근 가능.블록 스코프 (Block Scope)
{ }로 감싸진 영역(let, const).
ES6부터 생겼음.모듈 스코프 (Module Scope)
모듈 파일 내부에서만 유효, 전역과 분리되어 있음.
<script type="module">에서만 적용됨.
this는 스코프(렉시컬 환경)와는 별개 개념
화살표 함수는 this를 “자신이 정의된 스코프의 this”에서 상속
(1) type="javascript" (또는 text/javascript)
전통적인 스크립트 실행 방식.
최상위 스코프 = 전역 스코프.
브라우저에서는 this === window.
(2) type="module"
ES 모듈 스펙을 따름.
모듈 파일 내부는 독립된 모듈 스코프.
최상위 스코프의 this = undefined (strict mode 자동 적용).
(3) type="text/babel"
사실 브라우저는 text/babel을 직접 이해하지 못함
Babel(standalone 같은 도구)이 이 코드를 변환해서 실행하는데, 보통은 type="text/javascript"로 트랜스파일된 코드가 실행
그래서 Babel로 돌린 경우,
최상위 스코프의 this는 → window가 되는 게 일반적이다.