默认导出 export default
后面不能接 var
、 const
、 let
正是因为 export default
命令其实只是输出一个叫做 default
的变量,所以它后面不能跟变量声明语句。
//正确
export var a = 1;
//正确
var a = 1;
export default a;
//错误
export default var a = 1;
上面代码中,export default a
的含义是将变量 a
的值赋给变量 default
。
同样的,因为 export default
本质是将该命令后面的值,赋给 default
变量后再默认导出,所以直接将一个值写在 export default
后面。
上述理论可以通过下面代码验证:
首先在 a.js
文件下写如下代码:
export let a = 1;
let b = 2;
export default b;
在 b.js
文件下整体导入 a.js
模块:
import * as obj from './b.js';
console.log(obj);
然后通过 babel b.js --out-file c.js
将ES5代码转为ES6代码运行 c.js
,
结果为:
{ a: 1, default: 2 }
可以看到,obj
对象包含着 export 和 export default
的导出对象,其属性名就是 default
。