>웹 프론트엔드 >JS 튜토리얼 >엄격 모드에서 가져온 함수를 호출할 때 Babel이 쉼표 연산자를 추가하는 이유는 무엇입니까?

엄격 모드에서 가져온 함수를 호출할 때 Babel이 쉼표 연산자를 추가하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-08 18:03:15889검색

Why Does Babel Add a Comma Operator When Calling Imported Functions in Strict Mode?

Babel이 가져온 함수 호출을 엄격 모드에서 다시 작성하는 이유

엄격 모드에서 Babel은 가져온 함수 호출을 발견하면 다음을 포함하도록 다시 작성합니다. 아래 예에서 볼 수 있는 쉼표 연산자:

import { a } from 'b';

function x () {
  a()
}

컴파일된 엄격 모드의 출력은 다음과 같습니다.

'use strict';

var _b = require('b');

function x() {
  (0, _b.a)();
}

이 변환을 통해 가져온 함수는 이 설정을 전역 개체로 설정하여 호출됩니다(엄격 모드가 활성화된 경우 정의되지 않음). 쉼표 연산자가 없으면 가져온 함수는 이 모듈을 해당 모듈에 설정하여 호출됩니다.

쉼표 연산자 설명

쉼표 연산자(,)가 사용됩니다. 쉼표로 구분된 여러 표현식을 평가하는 JavaScript입니다. 마지막 표현식의 값을 반환합니다. 다시 작성된 코드에서는 쉼표 연산자가 다음과 같이 사용됩니다.

(0, _b.a)();

이는 다음 코드와 동일합니다.

0; // Ignore result
var tmp = _b.a;
tmp();

첫 번째 표현식 0은 무시됩니다. 두 번째 표현식 _b.a는 가져온 함수를 tmp 변수에 할당합니다. 세 번째 표현식인 tmp()는 이 설정을 전역 객체(또는 엄격 모드에서는 정의되지 않음)로 설정하여 가져온 함수를 호출합니다.

Babel은 쉼표 연산자를 사용하여 가져온 함수가 항상 다음과 같이 호출되도록 합니다. 실행 컨텍스트에 관계없이 이 값을 수정하세요.

위 내용은 엄격 모드에서 가져온 함수를 호출할 때 Babel이 쉼표 연산자를 추가하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.