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

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

Это все, что выполняет функция в соответствии с нашим определением строго ограниченного действия. Для чего еще мы могли бы создавать функции? Вы знаете те интернет-формы, в которых запрашивается ваш номер телефона? Учтите, что пользователь может ввести свой номер телефона следующим образом (555) -323–4938 или, может быть, 555–323–4938, или 555.323.4938, или просто 5553234938. На плохо написанных сайтах (глядя на вас, правительственные сайты), если вы вводите свой номер телефона в формате, отличном от того, который требуется в форме, вам будет предложено переформатировать его. Еще одно небольшое раздражение, которое так легко исправить.

Создайте функцию и назовите ее formatPhoneNumber. Когда пользователь предоставляет свой номер телефона, наша удобная функция сначала удаляет все, кроме самого номера. Это шаг 1. Шаг 2 - затем отформатировать номер так, как этого хочет сайт. Проблема решена без приставания к пользователю, чтобы узнать, какой формат ожидается. И эту удобную маленькую функцию можно использовать в любой программе, в которой нам нужно запрашивать у пользователя номер телефона.

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

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

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

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

  • сообщить им о продаже
  • спросите, насколько они довольны своей покупкой
  • объявить специальное событие
  • уведомить их об отзыве продукта

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

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

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

Так создаются компьютерные программы: маленькие фрагменты кода «склеиваются» вместе для выполнения более крупной задачи. В случае чего-то вроде Facebook могут использоваться сотни или даже тысячи функций.

Упражнение по функциям

Что из этого могло бы стать хорошим кандидатом на должность?