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 중국어 웹사이트의 기타 관련 기사를 참조하세요!