簡體   English   中英

Javascript ES6導出const vs export let

[英]Javascript ES6 export const vs export let

假設我有一個我要導出的變量。 有什么區別

export const a = 1;

VS

export let a = 1;

我理解constlet之間的區別,但是當你導出它們時,有什么區別?

在ES6中, import是導出值的實時只讀視圖。 因此,當您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變量。
  • 傳統的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

我認為一旦你導入它,行為是相同的(在你的變量將在源文件外使用的地方)。

唯一的區別是,如果您嘗試在此文件結束之前重新分配它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM