在使用 ES6 模块系统时,经常会遇到导出默认常量无效的问题。例如:
// module.js export default const myVar = 'Hello World'; // main.js import myVar from './module.js'; console.log(myVar); // 报错:Uncaught SyntaxError: Unexpected identifier
以上代码会报错,提示“Unexpected identifier”,说明导出默认常量的语法是有问题的。
问题的原因
导出默认常量有两种常见方法:
- 声明并导出常量
- 直接导出一个表达式
这两种方法的正确写法分别为:
// 方法一:声明并导出常量 const myVar = 'Hello World'; export default myVar; // 方法二:直接导出一个表达式 export default 'Hello World';
但是,在第一种方法中,如果不小心将 const
和变量名放错位置,就会写成如下错误的语法:
// 错误的语法:把 const 和变量名放错位置了! export default const myVar = 'Hello World';
这种写法容易让人产生「声明并导出常量」的错觉,实际上却是把 const
和 myVar
这个变量名都当作导出的属性名了,所以会报错。
解决方案
要解决这个问题,只需要按照正确的语法来声明和导出常量即可。如果想要把常量声明和导出放在一行,可以使用括号:
// 把声明和导出放在一行 export default (const myVar = 'Hello World', myVar);
这样写的意思是先声明并赋值 myVar
,然后再把 myVar
作为默认导出返回。
指导意义
在编写 JavaScript 代码时,要对语法非常熟悉,尤其是在使用 ES6 的模块系统时更要小心。要避免将不同的语法元素混在一起,导致出现难以发现的错误。同时,在写代码之前,也应该先大致设计好代码结构,尽可能规范化命名和注释,增强代码可读性和可维护性。
示例代码
-- -------------------- ---- ------- -- ------------- ----- ----- - ------ ------- ------ ------- ------ -- --------------- ------ ------- ------ ------- -- ---------------- ------ ------- ------ ----- - ------ ------- -------
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/11088