假設我有一個要導出的變量。什麼是VSJavascript ES6導出常量vs導出let
export let a = 1;
我明白const
和let
的區別
export const a = 1;
之間的區別,但是當你導出它們,有什麼區別?
假設我有一個要導出的變量。什麼是VSJavascript ES6導出常量vs導出let
export let a = 1;
我明白const
和let
的區別
export const a = 1;
之間的區別,但是當你導出它們,有什麼區別?
在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變量會相應更改。我認爲,一旦你導入它,行爲是相同的(在變量將被用於源文件之外的地方)。
唯一的區別是如果您嘗試在此文件結束之前重新分配它。
'export'關鍵字的詳細信息(這裏)(https://developer.mozilla.org/en/docs/web/javascript/reference/statements/export)。目前,任何網絡瀏覽器本身都不支持它。 – RBT