给定一个输入文件,例如
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.a
时将 this
设置为全局对象 (或者,如果启用了严格模式,则为未定义
)。如果您直接调用 _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/41986316/