Given an input file like
import { a } from 'b';
function x () {
a()
}
babel will compile it to
'use strict';
var _b = require('b');
function x() {
(0, _b.a)();
}
but when compiled in loose mode the function call is output as _b.a();
I’ve done some research into where the comma operator is added in the hope there was a comment explaining it. The code responsible for adding it is here.
Advertisement
Answer
(0, _b.a)() ensures that the function _b.a is called with this set to the global object (or if strict mode is enabled, to undefined). If you were to call _b.a() directly, then _b.a is called with this set to _b.
(0, _b.a)(); is equivalent to
0; // Ignore result var tmp = _b.a; tmp();
(the , is the comma operator, see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator).