Главная » Функции - фундаментальные строительные блоки для программ на JavaScript

Функции - фундаментальные строительные блоки для программ на JavaScript


04.03.2021, 22:10
Функции - краткий обзор

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

Функция имеет параметры - идентификаторы, выступающие в качестве локальных переменных тела функции.

При вызове (запуске) функции, в параметры передаются значения (аргументы), чтобы использовать их в теле функции для получения итогового значения.

Код

function showMessage(text) {
  console.log(text);
}

showMessage('Hello,World');

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

Код

function ret() {
  let num = 50;

  return num;
}

const anotherNum = ret();
console.log(anotherNum); // => 50

Вызов функции имеет контекст вызова, значение ключевого слова this.

Функция, присвоенная свойству объекта, называется методом данного объекта.

Функция, инициализирующая вновь созданный объект, называется конструктором.

Так как функции - это объекты, допустимо устанавливать их свойства и вызывать их методы.

Функции можно присваивать переменным и передавать их другим функциям.

Общий синтаксис функции:

Код

function имяФункции(параметр1, параметр2) {
  исполняемый код (тело функции)
}

имяФункции(аргумент1, аргумент2); // вызов функции

Пример работы функции:

Код

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

summ(3, 5);

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

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

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

Согласно теореме Пифагора: "сумма квадратов длин катетов равна квадрату длины гипотенузы".

Вложенная внутрь функции hypotenuse функция square возвращает значение, попадающее в параметр х, в квадрате.
Далее метод Math.sqrt() рассчитывает квадратный корень от суммы квадратов двух значений.
Полученный в консоли результат и будет длиной гипотенузы треугольника.

Код

function hypotenuse(a, b) {
  function square(x) {return x*x;}
  console.log(Math.sqrt(square(a) + square(b)));
}

Как видим, функция square имеет доступ к параметрам a и b, определённым во внешней функции hypotenuse.

Пробуем функцию в работе:

Код

function hypotenuse(a, b) {
  function square(x) {return x*x;}
  console.log(Math.sqrt(square(a) + square(b)));
}

hypotenuse(3,4); // => 5

Стрелочные функции (ES6)

Синтаксис стрелочной функции подразумевает отделение параметров функции от её тела стрелкой =>.

Ключевое слово function опускается, так же как и имя функции:

Код

const sum = (x, y) => { return x + y ; } ;

можно записать ещё короче:

Код

const sum = (x, y) => x + y ;

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

Код

const result = x => x * x ;

Стрелочная функция, не имеющая параметров, записывается с пустыми круглыми скобками

Код

const number = () => 15;


Стрелочные функции не определяют свой контекст вызова, а наследуют его из среды, в которой определены.

Также, стрелочные функции не имеют свойства prototype и их нельзя применять в качестве функций-конструкторов для новых классов.

Function Declaration и Function Expression

Function Declaration- стандартное объявление функции в потоке кода (как во всех наших примерах выше), при этом функцию можно вызывать как до её объявления, так и после.

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

Код

const message = function() {
  console.log("Hello,World");
};

message(); // вызываем функцию, обращаясь к имени переменной

КОММЕНТАРИИ (0)