Answers:
在ES6中,import
s是有关导出值的实时只读视图。结果,当您执行时import a from "somemodule";
,a
无论您如何a
在模块中声明,都无法将其赋值给。
但是,由于导入变量是实时视图,因此它们确实会根据导出中“原始”导出变量进行更改。考虑以下代码(从下面的参考文章借来的):
//------ lib.js ------
export let counter = 3;
export function incCounter() {
counter++;
}
//------ main1.js ------
import { counter, incCounter } from './lib';
// The imported value `counter` is live
console.log(counter); // 3
incCounter();
console.log(counter); // 4
// The imported value can’t be changed
counter++; // TypeError
如您所见,差异实际上在于lib.js
,而不是main1.js
。
总结一下:
import
无论如何在模块中声明相应的变量,都不能将其分配给-ed变量。let
-vs- const
语义适用于模块中声明的变量。
const
,则无法在任何地方重新分配或反弹该变量。let
,则只能在模块中(而不是用户)将其重新分配。如果更改,import
-ed变量也会相应更改。参考:http : //exploringjs.com/es6/ch_modules.html#leanpub-auto-in-es6-imports-are-live-read-only-views-on-exported-values
export
关键字详细信息在这里。当前,任何网络浏览器都不支持它本身。