`Export Default Const` が無効である理由は何ですか? 質問する

`Export Default Const` が無効である理由は何ですか? 質問する

以下の内容は問題ないと思います。

const Tab = connect( mapState, mapDispatch )( Tabs );
export default Tab;

しかし、これは誤りです。

export default const Tab = connect( mapState, mapDispatch )( Tabs );

しかし、これは問題ありません:

export default Tab = connect( mapState, mapDispatch )( Tabs );

なぜconstが無効なのか説明していただけますかexport default? これは不必要な追加であり、 として宣言されたものはまたは でexport defaultあると推定されるのでしょうかconst?

ベストアンサー1

constのようなものですletそれはLexicalDeclarationである( VariableStatement, Declaration ) ブロック内の識別子を定義するために使用されます。

これをキーワードと混ぜようとしていますdefaultHoistableDeclaration、ClassDeclaration、またはAssignmentExpressionが必要ですそれに従うこと。

したがって、これはSyntaxErrorです。


何かしたい場合は、const識別子を指定し、 を使用しないでくださいdefault

exportそれ自体は、その右側にVariableStatementまたはDeclarationを受け入れます。


以下は問題ありませんexport default Tab;

Tabdefaultという名前が付けられているため、AssignmentExpressionになります

export default Tab = connect( mapState, mapDispatch )( Tabs );結構です

以下はAssignmentExpressionTab = connect( mapState, mapDispatch )( Tabs );です。


更新:問題を想像する別の方法

これを概念的に理解しようとしていて、上記の仕様上の理由が役に立たない場合は、「 が有効な識別子であり、予約済みトークンではない場合、と をdefault記述する別の方法は何でしょうか?」と考えてください。export default Foo;export default const Foo = 1;

この状況では、拡張して書くと次のようになります。

// pseudocode, this thought experiment is not valid JS

export default Foo;
// would be like
export const default = Foo;

export default const Foo = 1;
// would be like
export const default const Foo = 1;
// so would the following line make sense?
const bar const Foo = 1;

拡張は次のようになるべきだという正当な議論がある。

// pseudocode, this thought experiment is not valid JS

export default const Foo = 1;
// would be like
const Foo = 1;
export const default = Foo;

しかし、これは曖昧になるだろうセルゲイのコメントしたがって、代わりにこのパターンを明示的に記述する方が理にかなっています。

おすすめ記事