默認導出 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
。