Тема проста: передача переменной (данных) между двумя или более функциями в javascript. Кажется, это очень просто. Но когда вы работаете над некоторыми проектами, возникает необходимость сделать переменную общей для двух или более функций, или передать значение, управляемое одной функцией, другой функции, или вызвать функцию после изменения переменной, которое может произойти с любой другой функцией. использовать. Это кажется немного запутанным, но после просмотра примеров вы поймете, что я пытаюсь передать.

  1. Использование глобальной переменной
  2. по возвращаемому значению
  3. с использованием локального хранилища/хранилища сеансов
  4. Использование обратных вызовов

1. Использование глобальной переменной

В некоторых случаях вам нужно использовать переменную, и к ней должна быть доступна одна или несколько функций, в то время вы можете объявить переменную в самой глобальной области видимости, чтобы все функции могли получить к ней доступ.

Возникает вопрос

Что делать, если переменная при объявлении неизвестна и получает значение только при вызове функции и с неопределенным значением ничего делать не надо?

Используйте условный оператор, чтобы проверить, является ли значение неопределенным или нет. Это не правильный путь. При объявлении любой переменной старайтесь иметь значение по умолчанию, и даже если оно имеет значение по умолчанию, не продолжайте проверять, чтобы это значение стало каким-то другим значением.

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

2. По возвращаемому значению

Каждая функция может возвращать значение и использоваться любыми другими функциями.

Проблема

Что, если функции вызываются многими другими функциями, но все равно возвращают одно и то же значение (например, выше)?

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

Этот метод становится мощным, когда возвращаемое значение функции отличается для каждого вызова и каждого переданного аргумента.

3. Использование хранилища сессий/локального хранилища

Это один из методов, который можно использовать для обмена данными между функциями и даже разными файлами, работающими в общем домене. Это неэффективно, когда вы совместно используете одну переменную между функциями, но будет намного эффективнее при совместном использовании объекта или JSON между функциями. Чтобы узнать больше о хранилище сеансов и локальном хранилище, ознакомьтесь с этим

https://javascript.plainenglish.io/storing-other-datatypes-in-localstorage-in-js-ee7f4c5318ff

4. Использование обратных вызовов

Обратные вызовы можно просто объяснить как функцию (функцию Callie), которая передается в качестве аргумента другой функции (функции вызывающей стороны), чтобы функцию можно было вызвать из функции вызывающей стороны. Это аналогично второму способу. Внутри простой функции может быть множество обратных вызовов, чтобы данные могли быть разделены между функциями.

Тем не менее, поток данных является односторонним, данные в вызывающей функции могут быть отправлены в вызывающую функцию. Значение может быть отправлено вверх с использованием возвращаемых значений.