javascript - 如何理解es6中 “export命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系”
PHP中文网
PHP中文网 2017-04-11 12:36:34
[JavaScript讨论组]
// 报错
export 1;

// 报错
var m = 1;
export m;

// 写法一
export var m = 1;

// 写法二
var m = 1;
export {m};

// 写法三
var n = 1;
export {n as m};

就是对的呢?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(1)
高洛峰

这部分我是这样理解,就根据——“export命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系”

export 1    
//这里输出的是一个值(1),没有与任何模块内部变量建立联系,所以直接报错。

var m = 1;
export m;    

//这里看起来就像是输出了一个变量m作为对外的接口,
理想状态下,认为m这个变量被输出到模块外被使用,并且模块内的m产生引用的关系。
然而现实情况是,变量m在模块中作为一个变量存在,但是通过export导出m时,被导出的只有m的值(1),
所以同样不与内部变量产生联系,于是报错。

如果不好理解,可以看看函数的传参。

let x=1;                 //声明变量
const foo=(x)=>{x=2};    //声明一个函数
foo(x)                   //传入x执行函数
console.log(x)           //    1
变量x作为foo的参数,只把变量x的值传入foo,x只作为数值的载体,函数内部x并没有与变量x产生直接联系。
只是复制了变量x的值(不谈对象)(这种复制值然后再使用的形式与CommonJS加载模式类似)。
至于究竟为什么不会能直接输出变量?这是es6规定...(猜测与静态编译啥的有关)


export var m = 1;
//这里是直接输出一个声明的变量,变量的值为1;

var m = 1;
export {m};
声明一个m,然后输出变量,这是规定的写法(语法),也是推介的。({}中带有变量,和解构赋值差不多)

var n = 1;
export {n as m};
as 重命名关键词,其他没啥好说的。

也才前不久刚看完阮大大的ES6入门,以上都是个人理解,如果有理解错的地方,请务必指出。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号