【发布时间】:2016-07-15 15:30:55
【问题描述】:
我看到以下内容很好:
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 或类似的东西?
【问题讨论】:
-
export default Tab = connect( mapState, mapDispatch )( Tabs );应该是export default connect( mapState, mapDispatch )( Tabs );。您正在导出函数调用的结果,而不是变量 Tab。 -
一个 const 或 let 在导出模块中是必需的(并且相关),但在导入模块中无关紧要,其中导入的标识符始终是只读的(不能分配给)。这仍然不能解释为什么“导出默认”的语法不同于非默认的“导出”。
-
注意:
export default Tab =是语法错误,Tab未定义。这将是有效语法的唯一方法是,如果您之前通过 let 或 var 将Tab分配给某些东西......例如let Tab; export default Tab = ...这不是一个好习惯。 -
这不是语法错误,分配给未定义的变量是有效的JS。但很可能是不受欢迎的行为。
标签: javascript scope export constants default