Точка с запятой после экспорта по умолчанию
прочитал здесь что мне не нужно ставить точку с запятой после экспорта по умолчанию. Таким образом, эта программа имеет ненужную точку с запятой:
export default function() {};
но если мой модуль такой:
export default function() {};
(() => {
// creating a new function scope
})();
тогда я не могу оставить точку с запятой.
так что здесь происходит? Грамматика говорит, что мне не нужна точка с запятой, но если я ее оставлю, код означает что-то еще?
обновление:
если я оставлю точка с запятой:
export default function() {}
(() => {
// creating a new function scope
})();
тогда экспортируемая функция вызывается вместо экспортируемой. babeljs.Ио компилирует последнее в:
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = (function () {})(function () {
// creating a new function scope
})();
;
module.exports = exports["default"];
точнее после того, как он вызывается, возникает ошибка, потому что также вызывается возвращаемое значение первой функции (но это не функция). Ошибка, которую я получаю в chrome, такова:
Uncaught TypeError: (intermediate value)(...) is not a function(…)
1 ответов
вам не нужно добавлять точку с запятой после export default
когда за ним следует объявление функции, то грамматика говорит.
Вавилон ошибается, я подал ошибка против него. Этот код следует интерпретировать как экспорт функции, а затем запуск IIFE как IIFE.