Супер простое объяснение функций JavaScript.

Функции упрощают чтение и тестирование кода. Они более модульны, чем стандартное процедурное программирование, и являются базовым строительным блоком как стилей объектно-ориентированного программирования, так и стилей функционального программирования. Они могут показаться сложными, но на самом базовом уровне это не так. Давайте посмотрим, смогу ли я демистифицировать для вас функции JavaScript.

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

const imAFunction = function(name){
    return “Hello World, I’m “ + name + “!”;
};

Точно так же, как const foo = “Boo!”; — это строковая переменная, а const bar = 245; — целочисленная переменная, imAFunction — это функциональная переменная. На самом деле вы можете передавать функции в новые переменные точно так же, как и в другие типы данных: const imAFunctionToo = imAFunction; устанавливает imAFunctionToo равным

function(name){
    return “Hello World, I’m “ + name + “!”;
};

Уникальность функции по сравнению с целым числом, числом с плавающей запятой или строкой заключается в том, что она может что-то делать! И ключ, чтобы включить его, это скобки. Обратите внимание, что в абзаце выше я установил imAFunctionToo равным imAFunction? Передача таким образом, без () для включения, будет действовать так же, как присваивание любой другой переменной типа данных, но как только вы добавите (), произойдет волшебство: если бы я набрал const imAFunctionToo = imAFunction(“Chad”);, наша переменная с неподходящим именем, imAfunctionToo, не будет равно:

function(name){
    return “Hello World, I’m “ + name + “!”;
};

Вместо этого он будет равен строке «Hello World, I’m Chad!» Давайте посмотрим, как происходит волшебство.

Думайте о функции как о мини-программе, заключенной в коробку из фигурных скобок:

function add(){
    1 + 2;
};

— вполне допустимая функция, которая действительно будет добавлять 1 и 2. Вы можете назначить другую переменную, чтобы она равнялась ей, как я говорил: const myAdd = add; устанавливает myAdd равным function(){ 1 + 2; };, но что происходит, когда мы включаем ее с помощью скобки: const myAdd = add();? Ничего такого. Это не равно 3, это равно undefined. Что случилось? Это связано с тем, что, несмотря на то, что функция складывает внутри этих фигурных скобок, у нас нет возможности получить результаты сложения из коробки.

Вот тут-то и появляется return. Как ни странно, return говорит функции «вернуть» значение, которое находится в этой строке — разберитесь. Итак, давайте изменим добавить:

function add(){
    return 1 + 2;
};

.Теперь, когда мы назначаем const myAdd = add();, myAdd будет равно 3! Вы можете написать практически любой код внутри функции, и когда дело доходит до строки, начинающейся с return, она возвращает во внешний мир значение этой строки и останавливает функцию.

function returnDemo() {
    4 + 5; // Adds but doesn't go anywhere
    return 1 + 3; // This is what will be returned
    return 6 + 7; // We will never get to this line.
};

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

function add(addend){
    return 1 + addend;
};

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

Итак, если я сделаю это с нашей функцией добавления: const sum = add(2);, это будет так, как если бы мы присвоили addend = 2, а затем выполнили программу внутри добавления: 1 + addend, и поскольку это находится в строке с возвратом, она выдает результат: 3! Вы также можете передать в функцию любое количество данных, просто добавьте больше переменных через запятую:

function math(addend, subtrahend){
    const subTotal = addend - subtrahend;
    return 1 + subTotal;
};

будет работать так же, как вы думаете: вычесть вторую переменную, которую вы передали, из первой, затем добавить этот результат к 1 и вернуть окончательный результат.

Хотите верьте, хотите нет, но большая часть того, что я здесь затронул, применима к другим языкам, а также к JavaScript с очень небольшими изменениями. Еще один пример того, что большинство языков программирования очень похожи, и как только вы выучите один, вам будет намного легче выучить следующий.

Итак, это было. Надеюсь, достаточно объяснений, чтобы относительно начинающий понял функции и как их использовать. Иди и кодируй!