Скажем, у меня есть переменная, которую я хочу экспортировать. Какая разница между
export const a = 1;
против
export let a = 1;
Я понимаю разницу между const
и let
, но когда вы их экспортируете, каковы различия?
Скажем, у меня есть переменная, которую я хочу экспортировать. Какая разница между
export const a = 1;
против
export let a = 1;
Я понимаю разницу между const
и let
, но когда вы их экспортируете, каковы различия?
В ES6, import
отображаются в режиме реального времени только для чтения по экспортированным значениям. В результате, когда вы выполняете import a from "somemodule";
, вы не можете назначить a
независимо от того, как вы объявляете a
в модуле.
Однако, поскольку импортированные переменные представляют собой представления Live, они изменяются в соответствии с экспортируемой в экспортируемой переменной "raw". Рассмотрим следующий код (заимствованный из справочной статьи ниже):
//------ 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.Я думаю, что после того, как вы импортируете его, поведение будет одинаковым (в том случае, когда ваша переменная будет использоваться вне исходного файла).
Единственное различие заключается в том, что вы попытаетесь переназначить его до конца этого самого файла.
проблема в том, что когда я запускаю страницу, ничего не происходит, и когда я открываю консоль, она говорит Uncaught SyntaxError: в объявлении const отсутствует инициализатор, это указывает на обратный вызов const (millis) => let lastTime; const callback (millis) => {if (lastTime) {this.update((millis - lastTime)/1000);} lastTime = millis; requestAnimationFrame (callback);}; callback();