Ответы:
В 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
ключевые слова здесь . В настоящее время он не поддерживается ни одним из веб-браузеров.