Logo
Книга для начинающих
ВходРегистрация
/
Программирование
/
Курс JavaScript
/

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

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

Когда мы пишем программы, нам нужно соединять действия друг с другом. Сложение чисел, объединение строк и работа с переменными — примеры того, как простые шаги комбинируются в более сложное поведение.

const rate = 10;
const hours = 5;
const salary = rate * hours + 100;
console.log(salary); // => 150

В программировании для этого используют понятие выражение — конструкцию, которая вычисляется и даёт результат. В примере выше rate * hours + 100 является выражением, составленным из переменных, числового литерала и арифметических операций. Результат можно сохранить в переменную или использовать дальше.

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

const bonus = 50;
const salary = (rate * hours + bonus) * 12 - 500;
console.log(salary);

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

Выражения как аргументы функций

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

// Здесь аргумент — число 150
console.log(150);

// А здесь аргумент — выражение, которое сначала вычисляется
console.log(10 * 15); // => 150

// Можно комбинировать сложнее
const rate = 10;
const hours = 15;
const bonus = 50;
console.log(rate * hours + bonus); // => 200

Функция console.log() просто получает готовое значение и выводит его. Способ получения этого значения функции безразличен — поэтому вызовы функций отлично сочетаются с любыми выражениями.

Вызов функции внутри функции

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

// Math.abs(-5) возвращает 5
// Этот результат сразу используется как аргумент console.log()
console.log(Math.abs(-5)); // => 5

Здесь Math.abs(-5) вычисляется первым и возвращает 5. Затем это значение подставляется в вызов console.log(). Такая комбинация может быть сколько угодно глубокой:

console.log(Math.abs(-5))

Шаг 1:  Math.abs(-5)  →  5
Шаг 2:  console.log(5) →  выводит 5

Сначала вычисляются вложенные вызовы, потом внешний. Например, в Math.round(Math.random() * 10) сначала отработает Math.random(), затем умножение, и только потом Math.round().

Использование функций в составе выражений

Функции возвращают значения, а значит их вызовы можно использовать как часть любых других выражений. Для длины строки воспользуемся функцией length():

import { length } from 'hexlet-basics/string';

const name = 'python';

// Длина строки минус 1 — индекс последнего символа
const lastIndex = length(name) - 1;
console.log(lastIndex); // => 5

// Результат можно использовать в арифметике
const text = 'hexlet';
const double = length(text) * 2;
console.log(double); // => 12

Здесь length(name) и length(text) являются полноценными выражениями: они возвращают значения, которые можно комбинировать с числами, переменными и другими операциями.

Задание

Дана строка text = 'Hexlet'. Выведите первый и последний символы в формате:

First: H
Last: t
Коммерческий опыт и Трудоустройство

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
/
Программирование
/
Курс JavaScript
/

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

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

Когда мы пишем программы, нам нужно соединять действия друг с другом. Сложение чисел, объединение строк и работа с переменными — примеры того, как простые шаги комбинируются в более сложное поведение.

const rate = 10;
const hours = 5;
const salary = rate * hours + 100;
console.log(salary); // => 150

В программировании для этого используют понятие выражение — конструкцию, которая вычисляется и даёт результат. В примере выше rate * hours + 100 является выражением, составленным из переменных, числового литерала и арифметических операций. Результат можно сохранить в переменную или использовать дальше.

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

const bonus = 50;
const salary = (rate * hours + bonus) * 12 - 500;
console.log(salary);

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

Выражения как аргументы функций

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

// Здесь аргумент — число 150
console.log(150);

// А здесь аргумент — выражение, которое сначала вычисляется
console.log(10 * 15); // => 150

// Можно комбинировать сложнее
const rate = 10;
const hours = 15;
const bonus = 50;
console.log(rate * hours + bonus); // => 200

Функция console.log() просто получает готовое значение и выводит его. Способ получения этого значения функции безразличен — поэтому вызовы функций отлично сочетаются с любыми выражениями.

Вызов функции внутри функции

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

// Math.abs(-5) возвращает 5
// Этот результат сразу используется как аргумент console.log()
console.log(Math.abs(-5)); // => 5

Здесь Math.abs(-5) вычисляется первым и возвращает 5. Затем это значение подставляется в вызов console.log(). Такая комбинация может быть сколько угодно глубокой:

console.log(Math.abs(-5))

Шаг 1:  Math.abs(-5)  →  5
Шаг 2:  console.log(5) →  выводит 5

Сначала вычисляются вложенные вызовы, потом внешний. Например, в Math.round(Math.random() * 10) сначала отработает Math.random(), затем умножение, и только потом Math.round().

Использование функций в составе выражений

Функции возвращают значения, а значит их вызовы можно использовать как часть любых других выражений. Для длины строки воспользуемся функцией length():

import { length } from 'hexlet-basics/string';

const name = 'python';

// Длина строки минус 1 — индекс последнего символа
const lastIndex = length(name) - 1;
console.log(lastIndex); // => 5

// Результат можно использовать в арифметике
const text = 'hexlet';
const double = length(text) * 2;
console.log(double); // => 12

Здесь length(name) и length(text) являются полноценными выражениями: они возвращают значения, которые можно комбинировать с числами, переменными и другими операциями.

Задание

Дана строка text = 'Hexlet'. Выведите первый и последний символы в формате:

First: H
Last: t
Коммерческий опыт и Трудоустройство

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
← ПредыдущийСледующий →
← ПредыдущийСледующий →
← ПредыдущийСледующий →

Ваше упражнение проверяется по этим тестам

// @ts-check

import { expect, test, vi } from 'vitest';

test('calling functions expression', async () => {
  const consoleLogSpy = vi.spyOn(console, 'log');
  await import('./index.js');

  const firstArg = consoleLogSpy.mock.calls.join('\n');

  expect(firstArg).toBe('First: H\nLast: t');
});
← ПредыдущийСледующий →

Решение учителя откроется через:

20:00

waiting_clock
← ПредыдущийСледующий →