}

Эта функция называется cube и имеет аргумент number. При вызове этой функции вместо формального аргумента подставляется его фактическое значение, функция выполняет возведение этого значения в куб и возвращает полученное число оператором return.

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

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

var х = cube(5); В результате переменная х получит значение 125.

Рекурсивные функции Важной особенностью языка JavaScript является то, что функция может вызывать не только другие функции, но и саму себя. Такие функции называются рекурсивными', во многих случаях использование рекурсии позволяет писать краткий код вместо сложных вложенных циклов. Следует, однако, учитывать, что рекурсия работает медленнее, чем обычный цикл, и пользоваться ею целесообразно только в тех случаях, когда это действительно оправдано.

Пример функции, вычисляющей факториал числа (факториал числа п равен 1х2х…хи):

function factorial(n) {

if (n <= 1) return 1; else

return (n * factorial(n-1));

}

Неаккуратно написанная рекурсивная функция может войти в бесконечный цикл и никогда не вернуть результата. Например, попытка вычислить факториал отрицательного числа с помощью приведенной функции приведет именно к такому результату.

Оператор return

Функции могут (но не обязаны) возвращать значение. Для указания этого значения используется оператор return, который имеет две формы:

return выражение return

Первая форма оператора завершает выполнение функции и возвращает значение выражения. Функция, содержащая такой оператор return, должна вызываться как часть выражения присваивания, например: х = 2 * cube (а)

Вторая форма оператора завершает выполнение функции и возвращает значение undefined. Функция, содержащая такой оператор return, должна вызываться как оператор, например setBrowser (myBrowser).

Если тело функции не содержит оператора return, то ее выполнение завершается с выполнением последнего оператора тела и возвращается значение

undefined.

Оператор всегда возвращает единственное значение. Это значит, что в случае, если нужно передать несколько значений, их потребуется заносить либо в массив, либо создавать собственный объект, свойствами которого объявлять необходимые переменные.

temp = new Array() temp.push[varl] temp.push[var2] return temp

ИЛИ

return myObj = [varl : valuel, var2 : value2]

Второй способ более предпочтителен, поскольку вы сразу же задаете переменным осмысленные значения, по которым впоследствии будете их вызывать (myobj. vari, myobj .var2). В первом случае придется либо потом задавать ос\@сленные значения, что приведет к увеличению кода, либо пользоваться малозначащими temp[0], temp[i] и т. п.

П2.5.4. Объект Math

Объект Math обеспечивает доступ к различным математическим константам и функциям. Свойства объекта Math перечислены в табл. П2.8, а методы - в табл. П2.9.


⇐ вернуться назад | | далее ⇒