JavaScript的ES6导出常量与出口让
比方说,我有一个variables,我想出口。 有什么区别
export const a = 1;
VS
export let a = 1;
我明白const
和let
之间的区别,但是当你导出它们时,有什么区别?
在ES6中, import
是对导出值的实时只读视图。 因此,当你import a from "somemodule";
,无论您如何在模块中声明a
,都不能分配给a
。
但是,由于导入的variables是实时视图,因此它们会根据导出中的“原始”导出variables进行更改。 考虑下面的代码(从下面的参考文献借用):
//------ 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
。
总结:
- 无论您如何在模块中声明相应的variables,都不能分配
import
variables。 - 传统的
let
vs-const
语义适用于模块中声明的variables。- 如果variables被声明为
const
,则不能在任何地方重新分配或反弹。 - 如果variables声明为
let
,则只能在模块中重新分配(而不是在用户)。 如果更改,则import
variables会相应更改。
- 如果variables被声明为
参考: http : //exploringjs.com/es6/ch_modules.html#leanpub-auto-in-es6-imports-are-live-read-only-views-on-exported-values
我认为,一旦你导入它,行为是一样的(在你的variables将被用于源文件之外的地方)。
唯一的区别是如果你在这个文件结束之前尝试重新分配它。