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

JS Учебник

JS Главная JS Введение JS Где установить? JS Вывод JS Заявления JS Синтаксис JS Комментарии JS Переменные JS Let JS Const JS Операторы JS Арифметика JS Присваивание JS Типы данных JS Функции JS Объекты JS События JS Строки JS Методы строк JS Поиск строк JS Шаблоны строк JS Числа JS Методы чисел JS Массивы JS Методы массива JS Сортировка массива JS Итерация массива JS Постоянный массив JS Даты JS Формат дат JS Методы получения дат JS Методы набора дат JS Объекты Math JS Случайные числа JS Булевы JS Сравнения JS Оператор If...Else JS Оператор Switch JS Цикл For JS Цикл For In JS Цикл For Of JS Цикл While JS Оператор Break JS Повторяющиеся JS Наборы JS Карты JS Typeof JS Преобразование JS Битовые JS Выражения JS Ошибки JS Область JS Подъемный JS Строгий JS Ключевое слово this JS Стрелки JS Классы JS JSON JS Отладчик JS Стиль JS Практика JS Ошибки JS Эффективность JS Слова

JS Версии

JS Версии JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE/Edge JS История

JS Объекты

Определение объекта Свойства объекта Методы объекта Отображение объекта Доступ объекта Конструкторы объекта Прототипы объекта Повторяющиеся объекты Набор объектов Карты объекта Справочник объектов

JS Функции

Определение функций Параметры функции Обращение к функции Вызов функции Применение функции Закрытие функции

JS Классы

Введение класса Наследование класса Статистический класс

JS Асинхронный

JS Обратный вызов JS Асинхронный JS Обещания JS Асинхронный

JS HTML DOM

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

JS Браузер BOM

JS Window JS Экран JS Расположение JS История JS Навигатор JS Предупреждение JS Синхронизация JS Куки

JS Веб APIы

Веб API Введение Веб API История Веб API Хранилище Веб API Работник Веб API Извлечь Веб API Геолокации

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

JS или jQuery

jQuery Селекторы jQuery Элементы jQuery CSS jQuery DOM

JS Примеры

JS Примеры JS HTML DOM JS HTML Ввод JS HTML Объекты JS HTML События JS Браузер JS Редактор JS Упражнения JS Викторина JS Сертификат

JS Справочник

JavaScript Объекты HTML DOM Объекты


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 функции могут использоваться как значения:

Пример

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 возвращает "функции" для функций.

Но 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 и фигурные скобки, только если функция представляет собой один оператор. Из-за этого может быть хорошей привычкой всегда держать их:

Пример

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

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