Добрый день! Тема нашей сегодняшней лекции — функции. Функции — это именованые блоки кода, которые призваны повысить переиспользование вашего кода и снизить его повторяемость. Все, что можно объединить, все, что повторяется более одного раза, лучше выносить в функции. Функции могут принимать аргументы и возвращать какие-либо значения, а также они являются объектами высшего порядка. Декларация функции. Вы видите декларацию простейшей функции, которая возвращает какое-то значение. В нашем случае это целое число примитив. Функции могут не возвращать значения, но тогда движок JavaScript сделает следующее: он искусственно добавит возвращение значения undefined в тело функции. Если внутри тела функции нет оператора return, движок JavaScript автоматически добавит его за вас со значением undefined. Все функции в JavaScript всегда возвращают значение: либо то, которое вернете вы, либо undefined. Функция, как я уже сказал выше, может принимать в себя аргументы и работать с этими аргументами. В нашем случае мы получаем на вход объект и идем вглубь этого объекта, обращаясь к его вложенному свойству. Аргументы ведут себя несколько по-разному в зависимости от того, какого типа передан внутри функции аргумент. Если в качестве аргумента передан примитив — строка, boolean или number, то он передается по значению, то есть у нас есть какой-то блок кода, который выполняется до вызова функции, вызов функции и блок кода, который выполняется после вызова функции. И мы передаем в функцию какой-то примитив. И примитив, если мы сделаем что-либо с ним внутри тела функции, внутри тела функции будет изменять свое значение, а снаружи, в блоке кода после, мы получим то же значение, что было в блоке кода до вызова функции. Это очень важно помнить. Изменение любого примитива, переданного в качестве аргумента в функцию, не приведет к его изменению снаружи. А все сложные типы данных — массивы, объекты, функции и любые другие, которые будут рассмотрены позже, — ведут себя иначе. При передаче их в качестве аргумента и при изменении у них свойств, если это объекты, добавлении в них индексов с какими-то значениями, если это массивы, или просто любые другие действия с ними, которые изменяют их, ведет к изменению переменных, которые были снаружи. Мы внутри функции ссылаемся на переменные, которые передаются в нее, и внутри нее изменяем их значения. Это очень важно помнить и для любых операций, которые будут изменять структуру массива или объекта, возможно, вам будет полезно сначала сделать его копию. Как я уже сказал, функции — это объекты высшего порядка. И в следующих лекциях мы разберем подробно то, как передавать функцию внутрь функции. А на этой лекции мы разобрали декларацию функции, разные способы возвращения из функции значений и то, как передаются в функции аргументы.