MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Функциональное выражение

Ключевое слово function используется для определения функции внутри выражения.

Синтаксис

function [name]([param1[, param2[, ..., paramN]]]) {
   statements
}

Параметры

name
Имя функции. Может быть опущено, в таком случае функция является анонимной. Имя функции является локальным только для её тела.
paramN
Имя аргумента, передаваемого в функцию.
statements
Инструкции, составляющие тело функции.

Описание

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

Примеры

Следующий пример демонстрирует создание безымянной (анонимной) функции и присвоение её переменной x. Функция возвращает квадрат переданного значения:

var x = function(y) {
   return y * y;
};

Именованное функциональное выражение

Если вы хотите сослаться на текущую функцию внутри тела этой функции, вам необходимо создать именованое функциональное выражение. Данное имя будет локальным только для тела функции (её области видимости). Кроме того, это позволяет избежать использования нестандартного свойства arguments.callee.

var math = {
  'factorial': function factorial(n) {
    if (n <= 1)
      return 1;
    return n * factorial(n - 1);
  }
};

Спецификации

Спецификация Статус Комментарий
ECMAScript 2017 Draft (ECMA-262)
Определение 'Function definitions' в этой спецификации.
Черновик  
ECMAScript 2015 (6th Edition, ECMA-262)
Определение 'Function definitions' в этой спецификации.
Стандарт  
ECMAScript 5.1 (ECMA-262)
Определение 'Function definition' в этой спецификации.
Стандарт  
ECMAScript 3rd Edition (ECMA-262)
Определение 'Function definition' в этой спецификации.
Стандарт Изначальное определение. Реализовано в JavaScript 1.5.

Совместимость с браузерами

Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
Базовая поддержка (Да) (Да) (Да) (Да) (Да)
Возможность Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Базовая поддержка (Да) (Да) (Да) (Да) (Да) (Да)

Смотрите также

Метки документа и участники

 Внесли вклад в эту страницу: KTatyana, SphinxKnight, teoli, AlexyAV
 Обновлялась последний раз: KTatyana,