Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
JavaScript에서 "functions cannot be labelled"라는 예외는 함수 선언 앞에 레이블이 있을 때 발생합니다.
함수 선언에 레이블을 붙이는 것은 허용되지 않습니다. 레이블은 선언이 아니라 문에만 적용되어야 하기 때문입니다. 이 레이블로 실제로 분기할 방법이 없습니다. 다만 레거시 JavaScript 구문 규칙 때문에, 오류가 발생하는 조건이 필요 이상으로 복잡합니다.
오류 메시지는 "invalid place for a function declaration to appear"와 비슷하게 표시될 수 있는데, 파서가 레이블을 보면 그 뒤에 문이 오기를 기대하지만 함수 선언은 문이 아니기 때문입니다. 이는 오류가 레이블 뒤에 함수를 둘 수 없다는 관점인지, 함수 앞에 레이블이 올 수 없다는 관점인지에 따라 달라집니다.
실제로 레이블이 분기 대상처럼 동작하길 기대했을 수도 있지만, 일반적으로 레이블로 의도한 것은 아닙니다. 가장 흔한 경우는 실제로 객체 리터럴에서 속성 키로 사용하려는 경우입니다.
여기서 {...}는 실제로 객체 리터럴이 아니라 화살표 함수의 블록 본문이므로 greet: 는 레이블이 됩니다. 이를 해결하려면 객체 리터럴을 괄호로 감싸야 합니다.
객체 리터럴에 메서드 구문을 사용하면 이러한 함정을 피할 수 있습니다.
This page was last modified on 2025년 10월 12일 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.