导入后导出的es6导出是否会更改?
为了便于阅读并将重要内容放在首位,我们考虑使用如下文件结构:
export default myFunction;
myFunction.$inject = ['something'];
function myFunction(){
//
}
但是根据定义,导入时为$ inject定义的值是否可用?
import myFunction from './myFunction';
if(myFunction.$inject)
// What value has myFunction.$inject ?
导入的文件是否刚刚导入到导出语句中?
对于我们使用Webpack和BabelJS的设置,似乎设置了值,但对于严格的es6解释是否也适用?
答案 0 :(得分:1)
但是根据定义,导入时为$ inject定义的值是否可用?
是的,它会。但这与ES6模块无关。由于对象(函数是对象)被表示为引用,因此您正在执行的任何突变在其他任何引用该对象的位置都可见。
这个更有趣的方面是:
// a.js
export var x = 42;
export function changeValue() {
x = 21;
};
// b.js
import {x, changeValue} from './b.js';
console.log(x); // 42
changeValue();
console.log(x); // 21
导入和导出 live 。这意味着为导出分配新值也会导致导入更新。您可以将其视为assign by reference:导入绑定没有导出值的副本,而是对导出绑定的内存位置的引用。