`export default let foo =…` выдает «Неожиданное зарезервированное слово строгого режима» [дубликаты]

1

Я тестирую модули JavaScript, включив флаг "Экспериментальная веб-платформа" в Chrome Dev (v60, на момент написания).

Когда я пытаюсь импортировать этот модуль:

export default let foo = 10;

Я получаю это сообщение об ошибке:

Uncaught SyntaxError: Unexpected strict mode reserved word

Он отлично работает без ключевого слова по default. И это прекрасно работает:

let a = 10;
export default a;

В MDN явно не указано, что допустимость export default... допускается с let, var, const и т.д., Но они приводят примеры с такими функциями:

export default function (…) { … }.

И переменные вроде этого:

export let name1 = …, name2 = …, …, nameN;

Вопрос. Невозможно ли в текущей спецификации экспортировать обычные переменные с ключевым словом по default как это можно сделать с помощью функций и классов?

Теги:
ecmascript-6
module

1 ответ

3
Лучший ответ

export имеет строго определенный синтаксис, правильный синтаксис экспорта по умолчанию -

export default expression;

let foo = 10 не является выражением, а выражением. Он может использоваться для названного экспорта:

export let name1, name2, …, nameN;

Для имени экспорта по умолчанию не требуется.

Аналогично export default function (…) { … }, это должно быть

export default 10;
  • 0
    Ааа, я вижу, не знал, что могу просто сделать export default 10; ! Но почему у них есть этот пример в статье MDN ? export let name1 = …, name2 = …, …, nameN;
  • 0
    Как говорится в ответе, он предназначен для именованных экспортных операций , а не для стандартных (по default это имя).
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню