Определение функций
Определение функции состоит из ключевого слова
function и
- Имени функции.
- Списка аргументов, заключённых в скобки и разделяемых запятыми.
- Операторов JavaScript, составляющих содержание функции, заключённых в фигурные скобки { }. Операторы функции могут могут содержать вызовы других функций, определённых в текущем приложении.
Например, следующий код определяет простую функцию под названием
square:
function square(number) {
return number * number;
}
Функция square принимает один аргумент -
number. Функция состоит из одного оператора, который возвращает квадрат аргумента функции. Оператор
return специфицирует значение, возвращаемое функцией.
Все параметры передаются в функцию по значению; значение передаётся в функцию, но, если функция изменяет значение этого параметра, это изменение не отражается глобально или в вызывающей функции. Однако, если Вы передаёте в качестве параметра объект и функция изменяет свойства объекта, это изменение видно вне функции, как показано в примере:
function myFunc(theObject) {
theObject.make="Toyota"
}
mycar = {make:"Honda", model:"Accord", year:1998};
x=mycar.make; myFunc(mycar); y=mycar.make;
Функция может определяться на базе условия. Например, в данном определении функции:
if (num == 0)
{
function myFunc(theObject) {
theObject.make="Toyota"
}
}
функция
myFunc определена только в том случае, если переменная
num равна 0. Если
num не равна 0, функция не определена, и любая попытка выполнить её потерпит неудачу.
Вы также можете определять
Function-объекты, как описано в
«Объекте Function».
Метод это функция, ассоциированная с объектом. Об объектах и методах вы можете узнать больше в Главе 7, «Работа с Объектами.»
Функция может быть также определена внутри выражения. Это называется функцией выражения. Обычно такая функция безымянна/anonymous; она не должна иметь имени. Например, функция
square может быть определена так:
const square = function(number) {return number * number};
Это удобно при передаче функции другой функции в качестве аргумента. В примере показана функция
map, определяемая и вызываемая с анонимной функцией в качестве параметра:
function map(f,a) {
var result=new Array;
for (var i = 0; i != a.length; i++)
result[i] = f(a[i]);
return result;
}
Вызов
map(function(x) {return x * x * x}, [0, 1, 2, 5, 10];
возвращает
[0, 1, 8, 125, 1000].