我认为以下各项都很好:

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

然而,这是不正确的:

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

然而,这是很好的:

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

这能解释为什么constexport default是无效的吗?这是一个不必要的增加&任何被宣布为export default的东西都被推定为constconst左右?

推荐答案

const类似于let,it is a LexicalDeclaration(VariableStatement, Declaration),用于在挡路中定义标识符.

您正试图将其与default关键字(which expects a HoistableDeclaration, ClassDeclaration or AssignmentExpression)混合在一起.

因此它是SyntaxError.


如果你想要const个东西,你需要提供标识符,而不是使用default.

export本身接受其右边的VariableStatementDeclaration.


以下是export default Tab;英镑的罚款.

Tab变成了AssignmentExpression,因为它被命名为default

export default Tab = connect( mapState, mapDispatch )( Tabs );元就可以了

这里Tab = connect( mapState, mapDispatch )( Tabs );AssignmentExpression.


Update:.想象问题的另一种方式

如果您试图从概念上理解这一点,而上面的规范推理无济于事,那么可以将其视为"if 100 was a legal identifier and not a reserved token, what would be a different way to write 101 and 102 ?"

在这种情况下,扩展的编写方式应该是

// 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;

有一个有效的论点是,扩展should应该是这样的

// pseudocode, this thought experiment is not valid JS

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

然而,每Sergey's comment次,这将变得模棱两可,因此,显式地编写此模式更有意义.

Javascript相关问答推荐

在JavaScript中检索一些文本

无法将nPM simplex-noise包导入在JS项目中工作

使用axios.获取实时服务器时的404响应

如何在RTK上设置轮询,每24小时

我开始使用/url?q=使用Cheerio

将2D数组转换为图形

为什么这个JS模块在TypeScript中使用默认属性导入?""

构造HTML表单以使用表单数据创建对象数组

在JS中拖放:检测文件

禁用.js文件扩展名并从目录导入隐式根index.js时,找不到NodeJS导入模块

变量在导入到Vite中的另一个js文件时成为常量.

当我try 将值更改为True时,按钮不会锁定

使用类型:assets资源 /资源&时,webpack的配置对象&无效

FireBase云函数-函数外部的ENV变量

如何为仅有数据可用的点显示X轴标签?

在查看网页时,如何使HTML中的按钮工作方式类似于鼠标上的滚轮或箭头键?

Node.js错误: node 不可单击或不是元素

Django导入问题,无法导入我的应用程序,但我已在设置中安装了它

使用Reaction窗体挂钩注册日历组件

用另一个带有类名的div包装元素