假设我有一个要导出的变量。之间有什么区别
export const a = 1;
与
export let a = 1;
我明白之间的差别const
和let
,但是当你导出它们,有什么区别?
在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
我认为一旦将其导入,其行为是相同的(在您的变量将在源文件外部使用的位置)。
唯一的区别是,如果您尝试在此文件结束之前重新分配它。
本文地址:http://javascript.askforanswer.com/javascript-es6daochuconst-vsdaochulet.html
文章标签:ecmascript-6 , es6-modules , javascript
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
文章标签:ecmascript-6 , es6-modules , javascript
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!