Wiki-учебник по веб-технологиям: JavaScript/ОпределениеФункций ...

Главная | |

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


Определение функции состоит из ключевого слова function и


Например, следующий код определяет простую функцию под названием square:

function square(number) {
   return number * number;
}


Функция square принимает один аргумент -number. Функция состоит из одного оператора, который возвращает квадрат аргумента функции. Оператор return специфицирует значение, возвращаемое функцией.

return number * number


Все параметры передаются в функцию по значению; значение передаётся в функцию, но, если функция изменяет значение этого параметра, это изменение не отражается глобально или в вызывающей функции. Однако, если Вы передаёте в качестве параметра объект и функция изменяет свойства объекта, это изменение видно вне функции, как показано в примере:

function myFunc(theObject) {
   theObject.make="Toyota"
}
 
mycar = {make:"Honda", model:"Accord", year:1998};
x=mycar.make;     // возвращает Honda
myFunc(mycar);    // передаёт функции объект mycar
y=mycar.make;     // возвращает Toyota (prop было изменено функцией)


Функция может определяться на базе условия. Например, в данном определении функции:

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].