Функции
JavaScript простым языком

За все предыдущие уроки, ты уже не раз пользовался различными функциями, такими как: alert(), prompt().
Сегодня же наступил день, когда ты сможешь написать свою собственную функцию и вызывать ее в любой части кода.
Функции придумали для того, чтобы не плодить одинаковый код в разных частях проекта. При разработке существует огромное множество мест, где это может произойти. Но, повторять код – большая ошибка и проблема. Не делай так.
Представь, у тебя есть форум. У каждого пользователя есть свой профиль, где он имеет возможность пополнить свой внутренний счет. На форуме очень много разделов и кнопка «Пополнить счет» встречается в нескольких местах сайта. Как обрабатывать множество кнопок? Что ж, мы можем для каждой кнопки написать один и тот же код обработки, но тогда это будет копированием одного и того же кода через весь проект. Т.е, мы можем делать примерно так:
let amount = +prompt('На какую сумму Вы хотите пополнить \
счет?');
alert(`Счет пополнен на сумму ${amount} $`);И мы можем копировать этот код по всему проекту, где нужно будет обработать нажатие кнопки. Но представь, что потом тебе нужно будет поменять валюту пополнения, т.е. сменить значок $ на значок рубля (₽). Тебе придется искать по всему проекту, куда ты копировал эти обработчики и в каждом куске заменять этот знак.
Не легче ли написать код один раз и затем просто вызывать его там, где это требуется? Для этого и придумали функции.
function callPayment() {
let amount = +prompt('На какую сумму Вы хотите пополнить\
счет?');
alert(`Счет пополнен на сумму ${amount} $`);
}Немного разберем синтаксис (живой пример). Для того чтобы написать свою функцию, сначала нужно написать ключевое слово function, после него написать имя будущей функции, после имени, обязательно, открыть и закрыть скобочки (), затем открыть тело функции открывающей фигурной скобкой {написать весь требуемый код и закрыть тело функции закрывающей фигурной скобкой }. Весь этот процесс называется определением функции.
Теперь, когда тебе потребуется выполнить код, который находится внутри этой функции ты просто должен вызвать эту функцию. Вызов функции выглядит так:
callPayment();Вот и все. В этом и есть прелесть функций. Если вызвать функцию 3-5-10 раз, то весь код выполнится ровно столько же раз (живой пример) :
callPayment();
callPayment();
callPayment();И, теперь, если нужно будет что-то поменять в процессе пополнения счета, то все что тебе будет нужно – это изменить саму функцию в одном месте.
Аргументы функции
Возьмем ту же самую функцию:
function callPayment() {
let amount = +prompt('На какую сумму Вы хотите пополнить\
счет?');
alert(`Счет пополнен на сумму ${amount} $`);
}После имени функции есть скобки – (). Они не просто для красоты, а еще и для того, чтобы засунуть в функцию какие-либо данные. Сейчас все поймешь.
Представь, у пользователя где-то в настройках профиля указана валюта, в которой он хочет пополнять счет. Следственно, значок валюты в этой строке должен измениться на ту, которую выбрал пользователь в настройках своего профиля.
alert(`Счет пополнен на сумму ${amount} $`);И еще встает один вопрос: для каждой валюты писать свою функцию? Ответ: нет.
Все, что нужно, это передать внутрь функции валюту указанную в профиле пользователя. Сделать это очень просто. Изменим нашу функцию:
function callPayment(currency) {
let amount = +prompt('На какую сумму Вы хотите пополнить\
счет?');
alert(`Счет пополнен на сумму ${amount} ${currency}`);
}Как видишь, в скобках появилась переменная с именем currency. Эту переменную можно использовать внутри функции. Для полноты картины (живой пример):
function callPayment(currency) {
let amount = +prompt('На какую сумму Вы хотите пополнить\
счет?');
alert(`Счет пополнен на сумму ${amount} ${currency}`);
}
let userCurrencyRub = '₽'; // валюта: рубль
let userCurrencyUSD = '$'; // валюта: доллар
callPayment(userCurrencyRub); // вызываем функцию с \
// валютой: рубль
callPayment(userCurrencyUSD); // вызываем функцию с \
// валютой: долларЕсли не понял, поясняю: мы берем нужную нам валюту и засовываем (передаем) ее внутрь функции. Переданное нами значение userCurrency записывается в переменную currency, которую мы написали при определении функции внутри (). Затем, полученную переменную currency, можно использовать внутри функции и в ней будет лежать именно то значение, которое мы передали.
Аргументы позволяют сделать любую функцию более гибкой.
Значение аргументов по умолчанию
function callPayment(currency) {
let amount = +prompt('На какую сумму Вы хотите пополнить\
счет?');
alert(`Счет пополнен на сумму ${amount} ${currency}`);
}
callPayment();Если вызвать функцию без передачи в нее аргумента currency, то значение этого аргумента (переменной) внутри функции будет равно undefined.
Чтобы не допустить этого, можно установить значение аргумента по умолчанию. Для этого внесем небольшие изменения в определении функции (живой пример):
function callPayment(currency = '$') {
let amount = +prompt('На какую сумму Вы хотите пополнить\
счет?');
alert(`Счет пополнен на сумму ${amount} ${currency}`);
}
callPayment();Все что мы изменили, это приравняли аргумент currency к значению $. В таком случае, если вызвать функцию и не передать в нее значение аргумента – по умолчанию будет равен уже не undefined, а $.
При этом, если мы все-таки передадим какое-то значение, то JavaScript как бы забудет про то, что мы назначали значение по умолчанию и возьмет именно то значение, которое мы передали.
Думаю, на этом знакомство с функциями закончим. Пока вам необходимо будет разобраться с определением функции и ее аргументами.
Домашнее задание
Определить функцию, которая будет запрашивать число (с помощью
prompt), умножать его на327и делить на10. И с помощьюalertвыдавать полученное значение;Определить функцию с аргументом, которая будет запрашивать число (с помощью
prompt), умножать его на то значение, указанное в качестве аргумента. И с помощьюalertвыдавать полученное значение.
Last updated
Was this helpful?