JavaScript Определения функций
JavaScript использует ключевое словоfunctionдля определения функций.
Функции могут быть определены с помощью объявлений или также могут быть выражениями.
Объявления функций
В предыдущих руководствах вы изучили синтаксис объявления функций:
function functionName(parameters) {
执行的代码
}
Объявление функции не выполняется немедленно. Оно вызывается, когда оно нам нужно.
![]() |
Точки с запятой используются для разделения исполняемых инструкций JavaScript. Поскольку объявление функции не является исполняемой инструкцией, оно не заканчивается точкой с запятой. |
|---|
Функциональные выражения
Функции JavaScript могут быть определены с помощью выражения.
函数表达式可以存储在一个变量中:
函数表达式存储在变量中后,该变量也可以用作函数:
上面的函数是一个匿名函数(没有名称的函数)。
存储在变量中的函数不需要函数名。它们通过变量名调用。
![]() |
上面的函数以分号结尾,因为它是一个可执行语句。 |
|---|
Function 构造函数
在上面的示例中,我们了解到函数是通过关键字function定义的。
函数也可以使用内置的 JavaScript 函数构造函数 (Function()) 来定义。
Примеры
var x = myFunction(4, 3);
Попробуйте сами »
На самом деле вам не обязательно использовать функцию-конструктор. Приведённый выше пример можно записать так:
Примеры
var x = myFunction(4, 3);
Попробуйте сами »
![]() |
В JavaScript во многих случаях нужно избегать использования ключевого словаnew. |
|---|
Поднятие функций
В предыдущих уроках мы уже узнали о "поднятии".
Поднятие — это поведение JavaScript по умолчанию, заключающееся в перемещении текущей области видимости в начало.
Поднятие применяется к объявлениям переменных и объявлениям функций.
Следовательно, функции можно вызывать до их объявления:
myFunction(5);
function myFunction(y) {
return y * y;
}
Функции, определённые с помощью выражений, не могут быть подняты.
Самовызывающиеся функции
Функциональные выражения могут быть "самовызывающимися".
Самовызывающееся выражение вызывается автоматически.
Если за выражением следуют (), оно будет вызвано автоматически.
Объявленные функции не могут вызывать сами себя.
Добавив круглые скобки, вы указываете, что это функциональное выражение:
The above function is actually anанонимной самовызывающейся функцией(без имени функции).
Функции можно использовать как значения
Функции JavaScript можно использовать как значение:
Функции JavaScript можно использовать как выражения:
Функции — это объекты
In JavaScript, using thetypeofдля проверки типа функции будет возвращена строка "function".
Но более точно описывать функции JavaScript как объекты.
Функции JavaScript имеютсвойстваии методы。
Свойство arguments.length возвращает количество аргументов, полученных во время вызова функции:
Метод toString() возвращает функцию в виде строки:
Примеры
return a * b;
}
var txt = myFunction.toString();
Попробуйте сами »
Стрелочные функции
В ES6 были введены стрелочные функции.
Синтаксис выражений стрелочных функций более краток, чем синтаксис выражений обычных функций.
(参数1, 参数2, …, 参数N) => { 函数声明 }
(参数1, 参数2, …, 参数N) => 表达式(单一)
// 相当于:(参数1, 参数2, …, 参数N) =>{ return 表达式; }
Когда есть только один параметр, круглые скобки необязательны:
(single parameter) => { function declaration }
single parameter => { function declaration }
Функции без параметров следует записывать с парой круглых скобок:
() => { function declaration }
Примеры
Попробуйте сами »
Некоторые стрелочные функции не имеют собственногоthis.Не подходят для определения。
метода объекта.
Когда мы используем стрелочные функции, стрелочная функция автоматически привязывает для нас значение внешнего this, поэтому в стрелочной функции значение this совпадает с внешним this.
Использованиеconstчем использованиеvarбезопаснее, потому что функциональные выражения всегда являются константой.
Если тело функции состоит только из одного оператора, можно опустить ключевое слово return и фигурные скобки {}, что является хорошей привычкой:
Примечание:IE11 и более ранние версии IE не поддерживают стрелочные функции.
Другие расширения