当前位置: 首页 > 知识库问答 >
问题:

为什么'Export Default Const'无效?

相弘和
2023-03-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无效?这是否是不必要的添加&任何声明为导出默认值的内容都假定为常量或类似的内容?

共有1个答案

徐栋
2023-03-14

const类似于let,它是一个LexicalDeclaration(VariableStatement,Declaration),用于定义块中的标识符。

您正在尝试将其与default关键字混合使用,该关键字需要后面跟着HoistableDeclaration、ClassDeclaration或AssignmentExpression。

因此,它是一个语法错误。

选项卡成为一个AssignmentExpression,因为它被指定为default名称

导出默认选项卡=connect(mapState,mapDispatch)(选项卡);没问题

这里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;
 类似资料:
  • 代码如上所示,background-size设置成8px,界面看不到任何效果,使用的是最新的chrome浏览器,请问是什么原因?

  • 问题内容: 我有一个子过程命令,输出一些字符,例如’\ xf1’。我正在尝试将其解码为utf8,但出现错误。 上面抛出: 当我使用’latin-1’时它可以工作,但是utf8也不能工作吗?我的理解是latin1是utf8的子集。 我在这里想念什么吗? 编辑: 问题答案: 您已经将Unicode与UTF-8混淆了。Latin-1是Unicode的子集,但不是UTF-8的子集。 避免像瘟疫一样思考各个

  • 问题内容: 我必须将npm应用程序的版本从0.1更改为0.0.1,以使npm不能执行此操作。 为了完整性,这里是工作的json 出现错误时,版本以前是“ 0.1”。 这是某种需要3套版本号的API / ABI兼容性版本控制概念吗?为什么错误消息对此不友好? 问题答案: 是的,这对于语义版本控制是必需的,这是npm软件包使用的版本控制方案。这是来自的片段: 版本必须可由node-semver解析,该

  • 为什么clearinterval不生效? react的项目,在函数组件中定义了定时器容器: 想通过鼠标移入控制定时器启停 于是定义了

  • 问题内容: 我正在编写需要隔离范围的指令,但是我想通过ngModel将其绑定到父范围。 这里的问题是父级的范围值未更改。 标记 JS 演示:小提琴。 如果我不对指令使用隔离范围,则此方法效果很好 演示:小提琴。 问题答案: 原因是因为您正在为指令创建隔离范围,所以同一元素上的指令也将获得该隔离范围。这意味着您有两个彼此不连接的不同作用域,它们都具有分别更改的属性。我想您可以通过以下代码举例说明:

  • 我无法解决getWindow();由于某种原因的方法...