В JavaScript ES6 в экспорт константный против экспорта давай



Допустим у меня есть переменная, которую я хочу экспортировать. В чем разница между



export const a = 1;


vs



export let a = 1;


Я понимаю разницу между const и let, но когда вы экспортируете их, каковы различия?

640   2  

2 ответов:

в ES6,imports-это живые представления только для чтения для экспортированных значений. В результате, когда вы делаете import a from "somemodule"; нельзя назначить a независимо от того, как вы объявляете a в модуле.

однако, поскольку импортированные переменные live представления, они изменяются в соответствии с" сырьевой " экспортируемой переменной в экспорте. Рассмотрим следующий код (заимствованный из приведенной ниже справочной статьи):

//------ 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-игрыconst семантика относится к объявленной переменной в модуле.
    • если переменная объявлена const, его нельзя переназначить или отскочить в любом месте.
    • если переменная объявлена let, он может быть переназначен только в модуле (но не у пользователя). Если он будет изменен, то import-Эд переменной меняется.

ссылка: http://exploringjs.com/es6/ch_modules.html#leanpub-auto-in-es6-imports-are-live-read-only-views-on-exported-values

Я думаю, что как только вы импортировали его, поведение будет таким же (в том месте, где ваша переменная будет использоваться вне исходного файла).

единственная разница будет, если вы попытаетесь переназначить его до конца этого самого файла.

Comments

    Ничего не найдено.