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

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 Ключевое слово let JS Константы JS Функция стрелки JS Классы JS Отладчик JS Руководство стиля JS Практика JS Распространенные ошибки JS Эффективность JS Зарезервированные слова JS Версии JS Версия ES5 JS Версия ES6 JS Версия 2016 JS Версия 2017 JS JSON

JS Формы

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

JS Объекты

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

JS Функции

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

JS Прочее

Классы введение Наследование класса Статические методы... JS Обратный вызов JS Асинхронный JS Обещания JS Асинхронный синтаксис

JS HTML DOM

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

JS Браузера BOM

JS Window 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

JS Веб API

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

JS или jQuery

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

JS Примеры

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

JS Справочник

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


Обновляется!!! Справочник JavaScript

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 = "Hello!!";  // я вызову себя
})();
Попробуйте сами »

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


Функции можно использовать как значения

Функции 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 и более ранних версиях.