const
就像 ,它是一个词法声明(变量声明,声明),用于定义块中的标识符。let
您正在尝试将此关键字与关键字混合,该关键字需要一个可提升的声明、类声明或赋值表达式来跟踪它。default
因此,它是一个语法错误。
如果你想要一些东西,你需要提供标识符,而不是使用.const
default
export
本身接受变量声明或声明的权利。
以下很好export default Tab;
Tab
成为赋值表达式,因为它被赋予了默认的名称?
export default Tab = connect( mapState, mapDispatch )( Tabs );
很好
下面是一个赋值表达式。Tab = connect( mapState, mapDispatch )( Tabs );
更新:以不同的方式想象问题
如果您试图从概念上理解这一点,并且上面的规范推理没有帮助,请将其视为“如果默认值
是合法标识符而不是保留令牌,那么编写导出默认值Foo
会有什么不同;并导出默认 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;
但是,根据Sergey的评论,这将变得模棱两可,因此明确地编写此模式更有意义。