Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

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

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

BaselineWidely available

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

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

Синтаксис

var myFunction = function [name]([param1[, param2[, ..., paramN]]]) {   statements};

С версии ES2015 можно также использоватьстрелочные функции.

Параметры

name

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

paramN

Имя аргумента, передаваемого в функцию.

statements

Инструкции, составляющие тело функции.

Описание

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

Поднятие функциональных выражений

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

js
console.log(notHoisted); // undefined//Хотя объявленная переменная и поднимается, определение переменной происходит позжеnotHoisted(); // TypeError: notHoisted is not a functionvar notHoisted = function () {  console.log("bar");};

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

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

js
var math = {  factit: function factorial(n) {    console.log(n);    if (n <= 1) {      return 1;    }    return n * factorial(n - 1);  },};math.factit(3); //3;2;1;

Переменная, которой присвоено функциональное выражение, будет иметь свойствоname, содержащее имя функции. Оно не изменится при переприсваивании другой переменной. Для анонимной функции, значением свойстваname будет имя переменной (неявное имя). Если же имя задано, то будет использовано имя функции (явное имя). Это же касается стрелочных функций (в их случае там будет записано имя переменной, т.к. они всегда анонимные).

js
var foo = function () {};foo.name; // "foo"var foo2 = foo;foo2.name; // "foo"var bar = function baz() {};bar.name; // "baz"console.log(foo === foo2); // trueconsole.log(typeof baz); // undefinedconsole.log(bar === baz); // false (errors because baz == undefined)

Примеры

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

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

Преимущественно анонимные функции используются какколбэк-функции.

js
button.addEventListener("click", function (event) {  console.log("button is clicked!");});

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

Specification
ECMAScript® 2026 Language Specification
# sec-function-definitions

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

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

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp