我在这里读到默认导出后我不需要加分号.所以这个程序有一个不必要的分号:
export default function() {};
但如果我的模块继续这样:
export default function() {}; (() => { // creating a new function scope })();
然后我不能留下分号.
那么这里发生了什么?语法说我不需要分号,但如果我离开它,代码意味着别的什么?
更新:
如果我留下分号:
export default function() {} (() => { // creating a new function scope })();
然后调用导出的函数而不是导出函数.babeljs.io将后者编译成:
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = (function () {})(function () { // creating a new function scope })(); ; module.exports = exports["default"];
更准确地说,在调用它之后会抛出一个错误,因为第一个函数的返回值也会被调用(但这不是函数).我在chrome中遇到的错误是这样的:
Uncaught TypeError: (intermediate value)(...) is not a function(…)
Benjamin Gru.. 10
在export default
一个函数声明之后,你不需要添加分号,这就是语法所说的.
巴贝尔是错的,我已经提出了反对它的错误.该代码应解释为导出函数,然后将IIFE作为IIFE运行.
在export default
一个函数声明之后,你不需要添加分号,这就是语法所说的.
巴贝尔是错的,我已经提出了反对它的错误.该代码应解释为导出函数,然后将IIFE作为IIFE运行.