Che*_*eng 127 javascript ecmascript-6 es6-modules
假设我有一个我要导出的变量.有什么区别
export const a = 1;
Run Code Online (Sandbox Code Playgroud)
VS
export let a = 1;
Run Code Online (Sandbox Code Playgroud)
我明白之间的差别const
和let
,但是当你导出它们,有什么区别?
Fel*_*tus 217
在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
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,差异真的在于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
归档时间: |
|
查看次数: |
88197 次 |
最近记录: |