JS функции: область видимости и return

Руководство рассматривает важные аспекты работы с функциями в JavaScript, включая область видимости параметров, повторное использование имен параметров и работу с ключевым словом return.

Область видимости параметров функции

Параметры функции доступны только внутри её тела.

function myFunction(a, b) {
  console.log(a, b); 
}

console.log(myFunction(3, 2)); // Выведет 3 2
console.log(a); // Выведет ошибку: ReferenceError: a is not defined

Параметры функции — переменные, которым присваиваются значения аргументов при вызове. Без ключевого слова return функция возвращает undefined.

Повторное использование имен параметров

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

function myFunction1(a, b) {
  console.log(a, b);
}

function myFunction2(a, b) {
  console.log(a, b);
}

const a = true;
const b = null;

console.log(myFunction1(2, 3)); // Выведет 2 3
console.log(myFunction2(5, 7)); // Выведет 5 7
console.log(a, b); // Выведет true null

Переменные a и b вне функций находятся в глобальной области видимости и не конфликтуют с параметрами функций.

Ключевое слово return

Ключевое слово return возвращает значение из функции. После return выполнение функции прекращается.

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

console.log(some(10, 5));     // Выведет 15
console.log(some(10, "string")); // Выведет "10string"
console.log(some("ABC", 2));   // Выведет "ABC2"
console.log(some());          // Выведет NaN

Вызов функции без аргументов приводит к присвоению параметрам значений undefined, что при сложении даёт NaN (Not a Number).

Выполнение после return

Выполнение функции останавливается сразу после инструкции return. Код после return не выполняется.

function myFunction(a) {
  console.log(a);
  return a;
  console.log(a); // Эта строка не выполнится
  let c = 10;
  console.log(c); // Эта строка тоже не выполнится
}

console.log(myFunction(10)); // Выведет 10

Без инструкции return функция неявно возвращает undefined.

Что будем искать? Например,программа