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).