export与export default
export本质上是对外暴露一个接口,来指向内部的引用,所以内部与外部必须一一对应,我们可以这样写:
export var a;
export var b;
这本质上是对外的一个引用,如果我们这样写:
var a = 1;
export a
这样的话 直接对外导出一个a,他并不是一个对内的引用,所以这样写法是错的
那export default呢?export default
就是输出一个叫做default
的变量或方法,然后系统允许你为它取任意名字
import {
default as foo} from 'foo'
等同于
import foo from 'foo'
正是因为export default
命令其实只是输出一个叫做default
的变量,所以它后面不能跟变量声明语句。
//错误
export default var a = 1;
//正确
var a = 1;
export default a;
因为export default
命令的本质是将后面的值,赋给default
变量,所以可以直接将一个值写在export default
之后。
export default对应函数的声明却是例外的,我们可以在export default使用函数声明语句
对于export default只是export的一个语法糖,我们从另外一个角度也能看出来,当我们使用es6来导出的时候:
a.js:export default a;
b.js:export {a}
我们使用require分别引用a.js和b.js ,我们会发现引用出来的对象想要拿到a的时候,对于b.js而言 直接可以用过点语法拿到,而a.js却需要一层.default.a才可以拿到,实际上是因为import默认给default元素增加一个变量名 并在import的时候做了处理
转载于//www.cnblogs.com/mrzhu/p/11075780.html
还没有评论,来说两句吧...