САЙТ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ НА РУССКОМ ЯЗЫКЕ
×

JS Учебник

JS Главная JS Введение JS Установка JS Вывод JS Синтаксис JS Заявления JS Комментарии JS Переменные JS Операторы JS Арифметика JS Присваивания JS Типы данных JS Функции JS Объекты JS Область JS События JS Строки JS Методы строк JS Числа JS Методы чисел JS Массивы JS Методы массива JS Сортировка массива JS Итерация массива JS Даты JS Формат даты JS Метод получения дат JS Методы набора... JS Математические... JS Случайные числа JS Булевы JS Сравнение... JS Заявления if...else JS Заявление switch JS Цикл for JS Цикл while JS Заявление break... JS Преобразование... JS Битовые... JS Регулярные выражения JS Ошибки JS Отладчик JS Подъемный JS Строгий JS Ключевое слово this JS Руководство стиля JS Практика JS Распространенные ошибки JS Эффективность JS Зарезервированные слова JS Версии JS Версия ES5 JS Версия ES6 JS JSON

JS Формы

JS Формы JS Формы API

JS Объекты

Определение объекта Свойства объекта Методы объекта Доступ к объекту Конструкторы объекта Прототипы объекта Объект ECMAScript 5

JS Функции

Определение функции Параметры функции Вызов Функции Вызвать Функцию Применение функции Закрытие Функции

JS HTML DOM

DOM Введение DOM Методы DOM Документы DOM Элементы DOM HTML DOM CSS DOM Анимация DOM События DOM Слушатель события DOM Навигация DOM Узлы DOM Коллекции DOM Список узлов

JS Браузера BOM

JS Окно JS Экран JS Местоположение JS История JS Навигатор JS Всплывающее окна JS Синхронизация JS Cookies

JS AJAX

AJAX Введение AJAX XMLHttp AJAX Запрос AJAX Ответ AJAX XML Файл AJAX PHP AJAX ASP AJAX База данных AJAX Приложения AJAX Примеры

JS JSON

JSON Введение JSON Синтаксис JSON или XML JSON Типы данных JSON Парсинг JSON Строки JSON Объекты JSON Массивы JSON PHP JSON HTML JSON JSONP



JavaScript Определение функции



JavaScript функции определяются с помощью ключевого слова function.

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


Объявление функции

Ранее в этом руководстве вы узнали, что функции объявляются со следующим синтаксисом:

function functionName(parameters) {
  // код для выполнения
}

Объявленные функции выполняются не сразу. Они "сохраняются для последующего использования" и будут выполняться позже, когда они будут вызваны.

Пример

function myFunction(a, b) {
  return a * b;
}
Попробуйте сами »

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


Выражение функции

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

Выражение функции может храниться в переменной:

Пример

var x = function (a, b) {return a * b};
Попробуйте сами »

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

Пример

var x = function (a, b) {return a * b};
var z = x(4, 3);
Попробуйте сами »

Приведенная выше функция на самом деле является анонимной функцией (функцией без имени).

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

Функция выше заканчивается точкой с запятой, поскольку она является частью исполняемого заявления.



Конструктор Function()

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

Функции также могут быть определены с помощью встроенного конструктора JavaScript функций, называемого Function().

Пример

var myFunction = new Function("a", "b", "return a * b");

var x = myFunction(4, 3);
Попробуйте сами »

На самом деле вам не нужно использовать конструктор функций. Приведенный выше пример аналогичен написанию:

Пример

var myFunction = function (a, b) {return a * b};

var x = myFunction(4, 3);
Попробуйте сами »

Большую часть времени вы можете избегать использования ключевого слова new в JavaScript.


Функция подъема

Ранее в этом уроке вы узнали о "подъеме" (JavaScript Подъемный).

Подъем - это стандартное поведение JavaScript при перемещении декларативных заявлений в верхнюю часть текущей области.

Подъем применяется к объявлениям переменных и к объявлениям функций.

Из-за этого, JavaScript функции могут вызываться до их объявления:

myFunction(5);

function myFunction(y) {
  return y * y;
}

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


Само-вызов функции

Выражения функций можно сделать "самовозбуждающимися".

Самовозбуждающееся выражение вызывается (запускается) автоматически, без вызова.

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

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

Вы должны добавить круглые скобки вокруг функции, чтобы указать, что это выражение функции:

Пример

(function () {
  var x = "Привет!";  // Я само-вызов
})();
Попробуйте сами »

Приведенная выше функция на самом деле является анонимной самозванной функцией (функция без имени).


JavaScript функции в качестве значений

JavaScript функции можно использовать в качестве значений:

Пример

function myFunction(a, b) {
  return a * b;
}

var x = myFunction(4, 3);
Попробуйте сами »

JavaScript функции можно использовать в выражениях:

Пример

function myFunction(a, b) {
  return a * b;
}

var x = myFunction(4, 3) * 2;
Попробуйте сами »

Функции - это объекты

Оператор typeof в JavaScript возвращает "function" для функций.

Но, JavaScript функции лучше всего описывать как объекты.

JavaScript функции имеют как свойства, так и методы.

Свойство arguments.length возвращает количество аргументов, полученных при вызове функции:

Пример

function myFunction(a, b) {
  return arguments.length;
}
Попробуйте сами »

Метод toString() возвращает функцию в виде строки:

Пример

function myFunction(a, b) {
  return a * b;
}

var txt = myFunction.toString();
Попробуйте сами »

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


Функции стрелки

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

Вам не нужно ключевое слово function, ключевое слово return и фигурные скобки.

Пример

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

// ES6
const x = (x, y) => x * y;
Попробуйте сами »

Функции стрелок не имеют своего собственного this. Они не очень хорошо подходят для определения методов объектов.

Функции со стрелками не размещаются. Они должны быть определены до их использования.

Использование const безопаснее, чем использование var, поскольку выражение функции всегда имеет постоянное значение.

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

Пример

const x = (x, y) => { return x * y };
Попробуйте сами »

Функции стрелок не поддерживаются в IE11 или более ранних версиях.