Итак, эта статья будет о том, что такое функции в JavaScript и, самое главное, что такое чистые и нечистые функции в JavaScript и как различать чистые и нечистые функции.

Оглавление

  1. Что такое функции
  2. Что такое чистые функции
  3. Что такое нечистые функции
  4. Заключение

Что такое функции в JavaScript?

Итак, прежде чем мы узнаем, что такое функции в JavaScript, мы все знаем, что JavaScript — это язык сценариев, что означает, что мы можем написать наш код построчно и сохранить его как имя файла сценария, точка JS, и JavaScript выполнит этот файл сценария. Теперь вопрос, зачем нам функция?

Поэтому, как только файл сценария становится очень большим, становится сложно определить и отладить, что делает конкретная строка кода, и именно здесь на сцену выходят функции JavaScript; Функции — это красота JavaScript. Это помогает обернуть определенный фрагмент скрипта и помогает определить, что делает конкретный набор скриптов или что от него требуется.

Теперь давайте разберемся с функциями на нескольких примерах:

function sayHello() {
  console.log(‘Hello’);
}
sayHello(); // Hello

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

Теперь давайте возьмем другой пример, чтобы лучше понять функцию:

function fullName(firstname, lastname) {
  console.log(`${firstname} ${lastname}`);
}
fullName(‘Amit’, ‘Singh’) // Amit Singh

Итак, в приведенном выше примере мы объявили функцию с именем fullName(), которая принимает два аргумента: имя и фамилию и печатает полное имя, принимая имя и фамилию в качестве аргументов.

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

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

Так как мы поняли, что такое функции, это поможет нам лучше узнать о чистых и нечистых функциях в JavaScript.

Что такое Чистая функция?

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

Теперь давайте разберемся с чистыми функциями на нескольких примерах:

function fullName(firstname, lastname) {
  console.log(`${firstname} ${lastname}`);
}
fullName(‘Amit’, ‘Singh’) // Amit Singh

Мы взяли тот же пример, который обсуждали выше; мы объявили функцию с именем fullName(), которая принимает имя и фамилию в качестве аргументов и возвращает полное имя.

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

Вот ключевые характеристики чистых функций:

  • Детерминированный: чистая функция всегда возвращает один и тот же результат при одинаковых аргументах. Он не зависит ни от какого скрытого или изменяемого состояния.
  • Без побочных эффектов. Чистые функции не изменяют переменные за пределами своей области, не изменяют структуры данных, не выполняют операции ввода-вывода и не оказывают никакого другого заметного влияния на состояние программы или внешний мир.
  • Ссылочная прозрачность: чистые функции могут быть заменены их возвращаемым значением без изменения поведения программы. Для данного набора входных данных вызов чистой функции всегда будет давать один и тот же результат, независимо от того, где и когда она вызывается.

Теперь на приведенном выше примере мы видим, что чистая функция имеет несколько преимуществ.

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

Что такое нечистая функция?

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

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

isUserAuthenticated() — это функция, которая возвращает true или false в зависимости от ситуации пользователя, вошел он в систему или нет.

function isUserLoggedIn() {
  const isAuthenticated = isUserAuthenticated() // return true or false;
  if(isAuthenticated) {
      console.log(`user is logged in`)
   } else {
      console.log(`user is not logged in`)
   }
 }

Теперь в приведенном выше примере мы видим, что у нас есть функция с именем isUserAuthenticated(), которая возвращает true или false в зависимости от ситуации с пользователем, вошел ли пользователь в систему или нет, а затем мы объявили функцию с именем isUserLoggedIn(), которая зависит от внешнего состояния, которое является функцией isUserAuthenticated(), и проверяет, аутентифицирован ли пользователь или нет, и на основе состояния, которое он выдает на выходе.

Так что теперь, увидев функцию isUserLoggedIn(), мы не можем предсказать вывод, потому что вывод основан на внешнем состоянии. Независимо от того, аутентифицирован ли пользователь или нет, он выдаст результат.

Разберем это на простом примере:

let c = 2
function add(a,b) {
  console.log(a+b+c)
}
add(1,2);

В приведенном выше примере мы объявили функцию с именем add(). Он принимает два аргумента, a и b, и возвращает сумму a + b + c; мы можем ясно видеть, что функция add() зависит от внешнего состояния, т. е. переменной c для вывода, и вывод никогда не будет одинаковым для данного ввода.

Теперь давайте разберемся на другом примере:

function generateUserId(){
  console.log(Math.floor(Math.random()*10000));
}

В приведенном выше примере мы создали функцию с именем generateUserId(), которая в основном генерирует случайный идентификатор пользователя, используя это внешнее состояние; в данном случае это функции Math.random(). Мы видим, что становится очень сложно предсказать вывод функции generateUserId().

Вот некоторые характеристики нечистых функций:

  • Побочные эффекты. Нечистые функции могут иметь побочные эффекты, то есть они могут изменять переменные за пределами своей области, изменять структуры данных, выполнять операции ввода-вывода (например, чтение или запись в файл или базу данных), создавать сетевые запросы, обновлять пользовательский интерфейс или взаимодействовать с API-интерфейсами браузера.
  • Зависимость от внешнего состояния. Нечистые функции могут полагаться на переменные или данные, которые не передаются в качестве параметров функции. Они могут получать доступ и изменять внешнее состояние, такое как глобальные переменные или свойства объектов за пределами их локальной области.
  • Недетерминированные. Нечистые функции могут давать разные результаты для одних и тех же входных данных, поскольку они могут зависеть от внешних факторов или изменения состояния.

Заключение

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

👋🏻 👋🏻 Привет, если вы здесь, свяжитесь со мной

Instagram/Twitter/LinkedIn