Как использовать импорт в JavaScript без побочных эффектов или выполнения чего-либо еще? - PullRequest
0 голосов
/ 23 июня 2018

Когда я использую import { export } from "module-name";, как мне убедиться, что он также не запускается import "module-name"; для побочных эффектов?

Другими словами, как заставить JavaScript только смотреть на экспорт и игнорировать все остальное в файле при импорте экспорта в другой файл.

Например:

Я хочу напечатать только "foo".

B.js:

// начинаем здесь

import {foo} from "./A.js";
foo();

A.js

export function foo() {
   console.log("foo");
}
console.log("IN A");

1 Ответ

0 голосов
/ 23 июня 2018

как заставить JavaScript только смотреть на экспорт и игнорировать все остальное в файле при импорте экспорта в другой файл.

В общем случае это не очень хорошо.определенная цель, потому что экспортированное значение может быть создано (полностью или частично) с помощью функции, вызывающей побочный эффект.Рассмотрим следующий модуль:

var bar;
if(Math.random() > 0.5) {
    bar = console.log("bar is undefined");
} else {
    bar = new Date();
}

export function foo() {
    console.log(bar);
}

Весь смысл функции foo здесь состоит в том, чтобы регистрировать bar, но чтобы узнать, что такое bar, мы должны пройти через минное поле неЧистые операции.Запрашивать только экспортированную функцию foo без запуска нечистого кода, генерирующего bar, не имеет никакого смысла - поведение foo полностью зависит от значения bar.

Если вы хотите, чтобы A.js не имел побочных эффектов, решение здесь состоит в том, чтобы (пере) написать код A.js, чтобы он не вызывал побочных эффектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...