当我注意到时,我正在Babel repl上玩耍:
import {foo} from 'bar';
foo();
Babel生成:
'use strict';
var _bar = require('bar');
(0, _bar.foo)();
而对于:
function foo() {}
foo();
Babel生成预期的:
"use strict";
function foo() {}
foo();
我的问题是关于第一个Babel输出的最后一行,是否有理由进行(0, _bar.foo)();
而不是_bar.foo()
?如果_bar.foo
是undefined
?
我找到了这些资源。来自MDN逗号运算符docs:
逗号运算符计算每个操作数(从左到右)并返回最后一个操作数的值。
并从MDN分组运算符docs:
分组运算符()控制表达式中评估的优先级。
根据我的理解,从这两个陈述中,(0, _bar.foo)
应评估为_bar.foo
?