gpt4 book ai didi

javascript - 为什么 babel 将导入的函数调用重写为 (0, fn)(...)?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:33 25 4
gpt4 key购买 nike

给定一个输入文件

import { a } from 'b';

function x () {
a()
}

babel 会把它编译成

'use strict';

var _b = require('b');

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

但是当以松散模式编译时,函数调用输出为 _b.a();

我已经对添加逗号运算符的位置进行了一些研究,希望有评论解释它。负责添加它的代码是here .

最佳答案

(0, _b.a)() 确保调用函数 _b.athis 设置为全局对象 (或者如果启用了严格模式,则为 undefined)。如果您要直接调用 _b.a(),则调用 _b.a 时将 this 设置为 _b.

(0, _b.a)(); 等同于

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

(, 是逗号运算符,参见 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator)。

关于javascript - 为什么 babel 将导入的函数调用重写为 (0, fn)(...)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50224483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com