Автор оригинала: Frugence Fidel.
Этот пост изначально опубликован на мой блог Отказ
Что такое функция
Функция – это группа утверждений, используемых для выполнения определенной задачи. Функции очень полезны при выполнении повторной задачи.
Например, мы хотим выводить определенные песни песен.
// Declare functions function verse1() { console.log('First verse goes here'); } function verse2() { console.log('Second verse goes here'); } function chorus() { console.log('Chorus goes here'); } // Call them // Use this pattern functionName() verse1(); // First verse goes here chorus(); // Chorus goes here verse2(); // Second verse goes here chorus(); // Chorus goes here
Как видите, Функция Chorus может быть повторена столько, сколько вы хотите.
Определение функции
Функция может быть определена следующими способами, а именно функцией объявления и экспрессию функции
// Function Declaration function verse1() { console.log('First verse goes here'); } verse1(); // First verse goes here // Function Expression let chorus = function() { console.log('Chorus goes here'); }; chorus(); // Chorus goes here
Возвращая стоимость
Вот как вы можете выводить результат от функции
let chorus = function() { return 'Chorus goes here'; }; console.log(chorus()); // Chorus goes here function sum() { return 1 + 1; } console.log(sum()); // 2
Функциональная область
Если вы объявляете переменную внутри функции, она не может быть утечна вне этой функции. Но функция может получить доступ к внешним переменным (глобальные переменные).
const amOut = 'Coming from outside'; function testScope() { const amIn = 'Coming from inside'; console.log(amOut); console.log(amIn); } console.log(testScope()); // Coming from outside, Coming from inside console.log(amIn); // amIn is not defined
Параметры против аргументов
Параметры используются при определении функции во время аргументов при вызове функции. На моей стороне аргументы являются значениями параметров, а параметры являются переменными аргументов. Оба помогают функции принимать входы.
// 'a' and 'b' are paremeters function sum(a, b) { return a + b; } // 5 and 7 are arguments console.log(sum(5, 7));
Аргументы функций по умолчанию
Функция по умолчанию аргументы используются, когда аргументы не определены.
function sum(a = 5, b = 7) { return a + b; } // If all arguments are undefined, then pass nothing console.log(sum()); // 12 // If all arguments are not undefined console.log(sum(6, undefined)); // 13
Параметры функции отдыха
Параметры отдыха помогают пропускать аргументы столько, сколько вы хотите, независимо от того, как функция определена. Параметры отдыха собирают аргументы в массив.
// Without rest paremeters function sum(a, b) { return a + b; } console.log(sum(5, 7, 6, 8)); // 12 console.log(sum()); // NaN // With rest paremeters function sum(...nums) { console.log(nums); // [5, 7, 6, 8] let total = 0; for (num of nums) { total += num; } return total; } console.log(sum(5, 7, 6, 8)); // 26 console.log(sum()); // 0 console.log(sum(5)); // 5 console.log(sum(5, 7)); // 12
Функция обратного вызова высокого порядка vs
Функция высокого порядка – это функция, которая принимает другую функцию в качестве параметра, когда функция обратного вызова – это функция, которая передается в другую функцию в качестве параметра.
function callback() { console.log('Coming from callback'); } function highOrder(func) { console.log('Waiting for callback'); func(); console.log('Callback is called'); } highOrder(callback); // Waiting for callback // Coming from callback // Callback is called
Анонимная функция
Анонимная функция – это функция без имени.
const anoyms = function() { console.log('I am Anonymous function'); }; setInterval(anoyms, 2000);
Функции стрелки
Функции стрелки вводятся в ES6, они имеют более короткий синтаксис по сравнению с функциями экспрессии. Функции стрелки всегда являются анонимными и необязательными «это».
// Expression function const sum = function(a, b) { return a + b; }; console.log(sum(5, 7)); // 12 // In Arrow function const sum1 = (a, b) => { return a + b; }; console.log(sum1(5, 7)); // 12 // In Arrow function(Implicity return) const sum2 = (a, b) => a + b; console.log(sum2(5, 7)); // 12