Javascript ES6导出const vs导出let

2020/11/10 22:22 · javascript ·  · 0评论

假设我有一个要导出的变量。之间有什么区别

export const a = 1;

export let a = 1;

我明白之间的差别constlet,但是当你导出它们,有什么区别?

在ES6中,imports是有关导出值的实时只读视图。结果,当您执行时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
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!