一尘不染

JavaScript为什么babel重写导入的函数调用(0,fn)(…)?

javascript

给定一个输入文件,例如

import { a } from 'b';

function x () {
  a()
}

巴别塔将其编译为

'use strict';

var _b = require('b');

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

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


阅读 346

收藏
2020-04-25

共1个答案

一尘不染

(0, _b.a)()确保在将函数设置为全局对象的_b.a情况下调用该函数this(如果启用了严格模式,则为to
undefined)。如果你打电话_b.a()直接,然后_b.a调用与this设置_b

(0, _b.a)(); 相当于

0; // Ignore result
var tmp = _b.a;
tmp();
2020-04-25