> 웹 프론트엔드 > JS 튜토리얼 > 가져온 함수를 호출할 때 Babel이 '(0, fn)(...)'을 사용하는 이유는 무엇입니까?

가져온 함수를 호출할 때 Babel이 '(0, fn)(...)'을 사용하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-14 22:24:19
원래의
192명이 탐색했습니다.

Why Does Babel Use `(0, fn)(...)` When Calling Imported Functions?

Babel의 컴파일된 출력에 왜 (0, Babel Function Call)이 있나요?

외부 모듈에서 함수를 가져와서 코드에서 사용할 때, Babel의 변환된 출력에서 ​​흥미로운 동작을 발견할 수 있습니다. 함수는 (0, fn)(...) 형식으로 래핑됩니다. 이는 느슨한 모드에서 컴파일할 때 쉼표 연산자가 없는 원래 함수 호출과 다릅니다.

이 변환에는 특정 목적이 있습니다. 함수의 this 컨텍스트가 전역 개체로 설정되도록 합니다. 엄격하지 않은 모드에서는 정의되지 않고 엄격 모드에서는 정의되지 않았습니다. _b.a()를 직접 호출할 때 this는 기본적으로 _b 모듈 객체

(0, _b.a)()를 사용하여 Babel이 강제로 this를 적절한 값으로 설정하여 호출할 함수입니다. 쉼표 연산자(,)는 본질적으로 이전 표현식의 반환 값(이 경우 0)을 버리고 오른쪽, 즉 이 인스턴스의 함수 호출을 평가합니다.

본질적으로 변환된 코드는 다음과 동일합니다:

0; // Ignore result
var tmp = _b.a;
tmp();
로그인 후 복사

이 기술은 함수의 컨텍스트가 예상과 일치함을 보장합니다. 행동.

위 내용은 가져온 함수를 호출할 때 Babel이 '(0, fn)(...)'을 사용하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿