gpt4 book ai didi

javascript - 默认导出后的分号

转载 作者:数据小太阳 更新时间:2023-10-29 04:10:19 29 4
gpt4 key购买 nike

我读了here我不需要在默认导出后加上分号。所以这个程序有一个不必要的分号:

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(…)

最佳答案

export default 后跟函数声明时,您不需要在其后添加分号,这就是 grammar 的含义说。

Babel 错了,我已经filed a bug反对。该代码应解释为导出函数,然后将 IIFE 作为 IIFE 运行。

关于javascript - 默认导出后的分号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34111664/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com