Функции. Часть 2
Функции умеют возвращать значения:
var multiplication = function (number) {
return console.log(number * 4);
};
multiplication(2);
//result 8В этом примере в качестве аргумента передаётся любое значение.
return console.log(number * 4); — в теле функции переданное значение умножается на 4 и полученное произведение чисел сразу выводится в консоль.В функцию в качестве аргумента можно передавать вызов другой функции:
var multiplication = function (number) {
return number * 4;
};
console.log(multiplication(multiplication(2)));
//result 32Сначала сработала функция, которой было передано число 2. Она его умножила на 4 и получилось 8. Затем, полученное произведение передали в качестве аргумента другой функции и снова умножили на 4. В итоге получилось 32.
console.log(); пришлось вынести за пределы основной функции. Это связано с тем, что console.log(); возвращает undefined и не может передать аргумент другой функции.Конечно, можно немного извратиться и записать всё в переменную и затем возвращать её. Но в этом случае вернётся два числа от двух функций — 8 и 32. Выглядит это так:
var multiplication = function (number) {
x = number * 4; console.log(x);
return x;
};
multiplication(multiplication(2));
//result 8, 32Несмотря на то, что в функцию можно передавать несколько аргументов, возвращать она может только один. Необходимо указывать, какой именно аргумент нужно вернуть. В противном случае, функция вернёт
undefined. Пример:var multiplication = function (number, text) {
return
};
console.log(multiplication());
//result undefinedС помощью нескольких функцию можно сделать генератор случайных фраз:
var words = function (words) {
return words[Math.floor(Math.random() * words.length)];
};
var randomLove = function () {
var animals = ["Котейка", "Пёсик"];
var loveOrNot = ["любит", "не любит"];
var string = words(animals) + " " + words(loveOrNot) + " тебя!";
return console.log(string);
};
randomLove();
//result Котейка любит тебя!Первая функция
words(); — отвечает за извлечения случайного индекса из массива. Но чтобы это произошло, в функцию должен быть передан массив в качестве аргумента.randomLove(); — вторая функция, которая хранит в себе две переменные с массивами из которых случайном образом извлекаются индексы (с помощью функции words();) и записываются в отдельную переменную. Ну и в конце, функция возвращает переменную string, которая выводит в консоль индексы.