1. ホーム
  2. javascript

[解決済み] Export Default Const」が無効なのはなぜですか?

2022-03-18 08:56:14

質問

下記で問題ないようですね。

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 defaultconst などと言うのでしょうか?

どのように解決するのですか?

const というのは let , であります。 レキシカルデクレアレーション ( VariableStatement, 宣言 ) を使って、ブロックの中で識別子を定義します。

と混在させようとしているのですね。 default というキーワードがあります。 を期待する HoistableDeclaration, ClassDeclarationの略。 または AssignmentExpression(アサインメント式 をクリックすると、それに続きます。

したがって、それは SyntaxError .


もし、あなたが const を使用せず、識別子を提供する必要があります。 default .

export はそれ自体で VariableStatement または 宣言 をその右側に配置します。


以下は大丈夫です。 export default Tab;

Tab AssignmentExpression という名前がついているので デフォルト ?

export default Tab = connect( mapState, mapDispatch )( Tabs ); は大丈夫です

これ Tab = connect( mapState, mapDispatch )( Tabs ); AssignmentExpression .


更新しました。 問題を想像する別の方法

もし、あなたがこれを概念的に理解しようとしていて、上記の仕様推論が役に立たないのであれば、次のように考えてみてください。 もし 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;

しかし、この場合、以下のように曖昧になります。 セルゲイさんのコメント そのため、このパターンを明示的に記述する方が理にかなっています。