Elementor Header #8

37. Вызов функции — выражение

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

Основы вызова функции

Вызов функции происходит при использовании имени функции с круглыми скобками, в которых могут быть указаны аргументы.

				
					function add(a, b) {
  return a + b;
}

let result = add(3, 4); // 7

				
			

Вызов функции как выражение

Поскольку вызов функции возвращает значение, его можно использовать в различных контекстах, таких как присваивание, операции и аргументы других функций.

Присваивание значения переменной

				
					let sum = add(10, 5);
console.log(sum); // 15

				
			

Использование в выражениях

				
					let total = add(2, 3) * add(4, 5);
console.log(total); // 45 (5 * 9)

				
			

Передача результата в другую функцию

				
					function multiply(a, b) {
  return a * b;
}

let result = multiply(add(2, 3), add(4, 5));
console.log(result); // 45 (5 * 9)

				
			

Вложенные вызовы функций

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

				
					function subtract(a, b) {
  return a - b;
}

let result = subtract(add(5, 5), add(2, 2));
console.log(result); // 6 (10 - 4)

				
			

Возвращение функции как результата

Функции в JavaScript могут возвращать другие функции, что позволяет создавать функции высшего порядка.

				
					function createMultiplier(factor) {
  return function(number) {
    return number * factor;
  };
}

let double = createMultiplier(2);
console.log(double(5)); // 10

				
			

Распространенные ошибки

Пропуск круглых скобок при вызове функции

Без круглых скобок функция не будет вызвана, вместо этого будет возвращена ссылка на саму функцию.

				
					console.log(add); // [Function: add]
console.log(add(3, 4)); // 7

				
			

Неправильное количество аргументов

JavaScript не требует строгого соответствия количества аргументов и параметров. Лишние аргументы игнорируются, а недостающие становятся undefined.

				
					function greet(name, greeting) {
  return `${greeting}, ${name}!`;
}

console.log(greet('Анна')); // undefined, Анна!

				
			

Вложенные вызовы функций без проверки на тип возвращаемого значения

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

				
					function divide(a, b) {
  if (b === 0) {
    return 'Невозможно делить на ноль';
  }
  return a / b;
}

let result = multiply(add(4, 2), divide(10, 0));
console.log(result); // Невозможно делить на ноль5, что неправильно

				
			

Заключение

Понимание того, что вызов функции является выражением, помогает использовать функции более гибко и эффективно. Это позволяет комбинировать результаты вызовов функций, создавать вложенные вызовы и использовать функции высшего порядка.

Тестовое задание

  1. Напишите функцию subtract, которая принимает два параметра и возвращает их разность. Затем используйте результат этой функции в качестве аргумента для функции multiply, чтобы умножить разность на число.

  2. Напишите функцию createGreeting, которая принимает параметр name и возвращает функцию, которая принимает параметр greeting и возвращает строку приветствия. Используйте результат этой функции для создания нескольких приветствий.

Пример решения:

				
					// Задание 1
function subtract(a, b) {
  return a - b;
}

function multiply(a, b) {
  return a * b;
}

let difference = subtract(10, 4);
let product = multiply(difference, 3);
console.log(product); // 18

// Задание 2
function createGreeting(name) {
  return function(greeting) {
    return `${greeting}, ${name}!`;
  };
}

let greetAnna = createGreeting('Анна');
console.log(greetAnna('Привет')); // Привет, Анна!
console.log(greetAnna('Здравствуйте')); // Здравствуйте, Анна!

				
			

Этот урок поможет вам лучше понять, как использовать вызовы функций в JavaScript как выражения и научит избегать распространенных ошибок при их использовании.

logo