← Back to NOTES 🌰 ← Effective JavaScript 🤿

← 아이템 14 - 기명 함수 표현식의 스코프에 주의하라

핵심 요약

블록-지역 함수 선언문은 ECMAScript 표준이 명확하지 않아 브라우저마다 다른 스코프 동작을 보인다. 일관성 없는 결과를 피하기 위해 함수 선언문은 블록 내부에 두지 않고, 대신 함수 표현식을 사용하는 것이 안전하다.

자세한 내용

블록-지역 함수 선언문이란?

if, for, while 등 코드 블록 내에서 선언된 함수를 말한다.

스코프 동작의 불일치

ECMAScript 표준의 부재

블록-지역 함수 선언문에 대한 명확한 ECMAScript 표준이 없기 때문에 각 브라우저가 다르게 구현

문제가 되는 시나리오

블록 스코프로 동작하는 경우

블록 내에서 선언된 함수가 해당 블록에서만 유효

함수 스코프로 동작하는 경우

블록 내에서 선언된 함수가 전체 함수에서 유효 (호이스팅 발생)

안전한 대안들

1. 함수 선언문을 블록 외부로 이동