Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在JSES6中,为什么如果我导出默认值,那么我就不能单独导出它?_Javascript_Reactjs_Ecmascript 6 - Fatal编程技术网

Javascript 在JSES6中,为什么如果我导出默认值,那么我就不能单独导出它?

Javascript 在JSES6中,为什么如果我导出默认值,那么我就不能单独导出它?,javascript,reactjs,ecmascript-6,Javascript,Reactjs,Ecmascript 6,我发现我可以做到: export function Foo() { return <div>hello</div>; } export default Foo; 为什么呢?它们似乎有着相同的用途:将Foo作为默认值单独导出,但第一种形式可以,而第二种形式则不行。我不太清楚这是否是一种语言怪癖,因为我从来没有看到一个简单的导出符号名,但将最后一行更改为这一行是有效的: 这是以下的简写: export { Foo as Foo }; 我怀疑这只是因为语法通常是: e

我发现我可以做到:

export function Foo() {
  return <div>hello</div>;
}

export default Foo;

为什么呢?它们似乎有着相同的用途:将
Foo
作为默认值单独导出,但第一种形式可以,而第二种形式则不行。

我不太清楚这是否是一种语言怪癖,因为我从来没有看到一个简单的
导出符号名
,但将最后一行更改为这一行是有效的:

这是以下的简写:

export { Foo as Foo };
我怀疑这只是因为语法通常是:

export [function|const|class|let] Foo ...etc...
MDN提供了多种不同的导出方式


我没有一个答案,为什么
导出Foo
不起作用

不是
导出{Foo}
实际上相当于`导出{Foo:Foo}字面意思?@RandyCasburn在
导入
导出
中,不是
{Foo:Foo}
而是
{Foo as Foo}
@RandyCasburn如果是
导出默认{Foo}
应该是;只是
export{Foo}
将是命名的导出,但在该上下文中它不是一个对象文本,例如,您不能编写
export{Foo:Bar}
。对,所以我误解了规范。在幕后,导出名称绑定到具有相同名称的模块标识符。就像任何其他环境记录绑定一样。但是,很明显,这并不能直接转化为语言语法。我从未尝试过将其作为对象文字来编写(谁会呢?),但经过一点尝试后,很容易看到。感谢您的澄清。“我不知道为什么
export Foo
不起作用”-这显然是规范不允许的,这还不够吗?:-)甚至不知道你期望它做什么不是有效的语法。你可能正在使用打字脚本吗?
export { Foo as Foo };
export [function|const|class|let] Foo ...etc...