в первом файле написано 2 функции: одна из них генератор рандомного числа. Другая - делает что-то другое, в себе использует этот генератор и экспортируется.
• во втором файле происходит импорт большой функции из первого файла и она где-либо используется.
Вопрос: чтобы всё работало во втором файле, мне ведь не нужно экспортировать в него ещё и генератор рандомного числа, который как бы используется в экспортированной функции?
Для наглядности сделал пример:
index.js:
const getNum = () => Math.random();
export const baseOfGame = () => {
const number = getNum();
// какой-то код
}
calc.js:
import { baseOfGame } from ‘./index.js’
const calc = () => {
baseOfGame();
// какой-то код
}
learn.javascript.ru
Экспортируешь ты например функцию, всё внутри функции является её собственностью, по этому нет, не нужно, но есть подводный камень. Вызов функции может работать с чём-то из вне и если это вне находится где сама функция пишется, то придётся и это экспортровать, а где функция вызывается, туда импортировать. Это стандартная модель поведения того, как работает область видимости.
Про подводный камень не до конца ясно. Буду благодарен, если сможешь показать наглядно. Можешь добавить в пример, который я условно сделал?
1. Код внутри функции - собственность функции. 2. Функция принимает какие-то параметры и с ними работает, разумеется в другом модуле этих параметров может не быть и их необходимо импортировать, но сначала экспортировать.
Обсуждают сегодня