`出口默认让foo = ...`抛出“意外的严格模式保留字”

问题描述:

我试图在Chrome Dev(v60,在撰写本文时)启用“Experimental Web Platform”标志来使用JavaScript模块。`出口默认让foo = ...`抛出“意外的严格模式保留字”

当我尝试导入该模块:

export default let foo = 10; 

我收到此错误信息:

Uncaught SyntaxError: Unexpected strict mode reserved word 

它工作正常,没有default关键字。而这个工作太细:

let a = 10; 
export default a; 

MDN没有明确说,export default ...符号被允许与letvarconst等,但它们确实给人以函数的例子是这样的:

export default function (…) { … }. 

和变量是这样的:

export let name1 = …, name2 = …, …, nameN; 

问题:当前规范不可能像使用函数和类一样使用default关键字导出常规变量吗?

exportstrictly defined syntax,默认输出正确的语法是

export default expression; 

let foo = 10不是一个表达式,但声明。它可用于命名导出:

export let name1, name2, …, nameN; 

对于默认导出名称是不需要的。

类似于export default function (…) { … },它应该是

export default 10; 
+0

啊我明白了,不知道我只是做'出口默认10;'!但是为什么他们在[MDN文章](https://developer.mozilla.org/en/docs/web/javascript/reference/statements/export)中有这个例子呢? 'export let name1 = ...,name2 = ...,...,nameN;' – JoeRocc

+0

正如答案所说,它是* named exports *,not for * default *('default'实际上是名称)。 – estus

+0

“'default”实际上是名称“ - 合理!谢谢! – JoeRocc