Какова цель (и любой дополнительный эффект) вызова функции при объявлении экспорта? - PullRequest
0 голосов
/ 17 января 2019

Простой экспорт заканчивается объявлением функции / переменной / класса, таким как export default hello

Представьте, что hello - это функция в модуле hello. В чем разница между вызовом export default hello() в экспортируемом модуле и вызовом hello() в импортирующем модуле import hello from "./hello"?

Похоже, что нет никакой разницы, кроме того факта, что второй вариант требует инициализации (вызова) функции внутри модуля, который импортирует hello.

// hello.js

function hello () {
  console.log("hello")
 }

// 1st option function declaration
export default hello

// 2nd option - run function on export
export default hello()

// index.js

import hello from "./hello";

// 1st option initialise (calling)
hello();

// 2nd option - no calling needed

Поиск в Интернете, но не удается найти возможные побочные эффекты или какой из них является лучшим способом обработки модуля, который содержит и экспортирует функцию.

1 Ответ

0 голосов
/ 17 января 2019

Если вы импортируете функцию из двух разных модулей:

  // A
 import hello from "./hello";
 hello();

 //B
 import hello from "./hello";
 hello();

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

Тем не менее, не имеет смысла вообще иметь функцию во втором случае, как это:

 function hello () {
  console.log("hello");
  return "something";
 }

 export default hello();

равно:

 console.log("hello");
 export default "something";
...