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

Функции JavaScript определяются через function ключевое словоОпределение.

Вы можете использовать функциюHoisting — это способ, с помощью которого JavaScript поднимаетили функцияВыражение

декларация функции

Ранее в этом курсе вы изучили следующий синтаксисHoisting — это способ, с помощью которого JavaScript поднимаетФункция:

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

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

Пример

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

Попробуйте сами

Точка с запятой используется для разделения исполнимых предложений JavaScript.

Поскольку функцияHoisting — это способ, с помощью которого 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 определенное ключевым словом.

Функция также может быть определена через имя Function() Function()

Пример

внутренние функции JavaScript для их определения.
функции JavaScript могут использоваться в качестве значений:

Попробуйте сами

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

Пример

на самом деле вам не нужно использовать функциональный конструктор. Вот так же будет работать пример выше:
функции JavaScript могут использоваться в качестве значений:

Попробуйте сами

var myFunction = function (a, b) {return a * b}; в большинстве случаев вы можете избежать использования в JavaScript new

ключевые слова.

подъем функций

в этом руководстве вы уже изучили "поднятие" (hoisting).Hoisting — это способ, с помощью которого JavaScript поднимаетОбъявление

по умолчанию переместить в顶端 текущего области видимости.

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

Таким образом, функции JavaScript могут быть вызваны до их объявления:
 myFunction(5);
     function myFunction(y) {
}

return y * y;

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

Самоиспользующиеся функции

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

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

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

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

Пример

Вы должны добавить скобки вокруг функции, чтобы указать, что это функция-выражение:
    (function () {
var x = "Hello!!";      // Я буду вызывать себя}()

Попробуйте сами

;функция, приведенная выше, на самом деле являетсяанонимная самовызывающаяся функция

(анонимные функции без имени)。

функции могут использоваться в качестве значений

Пример

function myFunction(a, b) {
    return a * b;
}
функции JavaScript могут использоваться в качестве значений:

Попробуйте сами

var x = myFunction(4, 3);

Пример

function myFunction(a, b) {
    return a * b;
}
функции JavaScript могут использоваться в выражениях:

Попробуйте сами

var x = myFunction(4, 3) * 2;

функции в JavaScript являются объектами typeof оператор возвращает "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 и фигурные скобки. Поэтому их сохранение может быть хорошей привычкой:

Пример

const x = (x, y) => { return x * y };

Попробуйте сами

IE11 и более ранние версии не поддерживают箭очные функции.