export:用于规定模块的对外接口(分别针对输出变量、方法做出代码示例)
总结:
方式一跟方式二的区别在于方式二使用大括号指定所要输出的一组变量。它与方式一的写法(直接放置在var语句前)是等价的,但是应该优先考虑使用方式二这种写法。因为这样就可以在脚本尾部,一眼看清楚输出了哪些变量。
方式二跟方式三的区别在于方式三使用as关键字,重命名了变量和函数的对外接口(通常情况下,输出的变量就是本来的名字)。重命名后,变量和函数可以用不同的名字输出两次。
注意:
另外,export语句输出的接口,与其对应的值是动态绑定关系,即通过该接口,可以取到模块内部实时的值。这一点与 CommonJS 规范完全不同。CommonJS 模块输出的是值的缓存,不存在动态更新。
最后,export命令可以出现在模块的任何位置,只要处于模块顶层就可以。如果处于块级作用域内(大括号内),就会报错,下一节的import命令也是如此。
方式一:
//输出变量
export var firstName = 'Michael';
export var lastName = 'Jackson';
export var year = 1958;
//输出方法
export function multiply(x, y) {
return x * y;
};
方式二:
//输出变量
var firstName = 'Michael';
var lastName = 'Jackson';
var year = 1958;
export { firstName, lastName, year };
//输出方法
function multiply(x, y) {
return x * y;
};
export {multiply}
方式三:
//输出变量
var n = 1;
export {n as m};
//输出方法
function f() {}
export {f as g};