<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.cusu.edu.ua/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
		<id>https://wiki.cusu.edu.ua/index.php?action=history&amp;feed=atom&amp;title=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D1%96%D1%97</id>
		<title>Функції - Історія редагувань</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.cusu.edu.ua/index.php?action=history&amp;feed=atom&amp;title=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D1%96%D1%97"/>
		<link rel="alternate" type="text/html" href="https://wiki.cusu.edu.ua/index.php?title=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D1%96%D1%97&amp;action=history"/>
		<updated>2026-07-08T12:07:54Z</updated>
		<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
		<generator>MediaWiki 1.23.2</generator>

	<entry>
		<id>https://wiki.cusu.edu.ua/index.php?title=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D1%96%D1%97&amp;diff=26608&amp;oldid=prev</id>
		<title>Онищенко Сергей: Створена сторінка: 3.6.8.1. Декларация функции  Функции являются одним из основных механизмов языка JavaScript; они …</title>
		<link rel="alternate" type="text/html" href="https://wiki.cusu.edu.ua/index.php?title=%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D1%96%D1%97&amp;diff=26608&amp;oldid=prev"/>
				<updated>2010-04-14T08:50:43Z</updated>
		
		<summary type="html">&lt;p&gt;Створена сторінка: 3.6.8.1. Декларация функции  Функции являются одним из основных механизмов языка JavaScript; они …&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;3.6.8.1. Декларация функции&lt;br /&gt;
&lt;br /&gt;
Функции являются одним из основных механизмов языка JavaScript; они охватывают ту область, которая в других языках программирования реализуется подпрограммами, процедурами и функциями. Функция в JavaScript — это набор операторов, выполняющих определенную задачу.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы пользоваться функцией, мы должны сначала ее определить. Декларация функции имеет вид:&lt;br /&gt;
&lt;br /&gt;
function имя(аргументы?) {&lt;br /&gt;
  операторы&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Здесь имя — идентификатор, задающий имя функции, аргументы — необязательный список идентификаторов, разделенных запятыми, который содержит имена формальных аргументов функции, а операторы — любой набор операторов, который называется телом функции и исполняется при ее вызове.&lt;br /&gt;
&lt;br /&gt;
Рассмотрим следующий пример:&lt;br /&gt;
&lt;br /&gt;
function cube(number) {&lt;br /&gt;
  return number * number * number;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Эта функция называется cube и имеет один формальный аргумент number. При вызове этой функции вместо формального аргумента подставляется его фактическое значение, функция выполняет возведение этого значения в куб и возвращает полученное число оператором return.&lt;br /&gt;
&lt;br /&gt;
Переменные, декларированные в теле функции, являются локальными, т. е. недоступны вне ее тела. Подробности см. в описании области действия переменных.&lt;br /&gt;
3.6.8.2. Вызов функции&lt;br /&gt;
&lt;br /&gt;
Важно понимать, что появление декларации функции в тексте сценария не означает ее немедленного выполнения; тело функции будет выполняться только тогда, когда какой-либо оператор будет содержать вызов этой функции. Например, функция из предыдущего примера может быть вызвана так:&lt;br /&gt;
&lt;br /&gt;
var x = cube(5);&lt;br /&gt;
&lt;br /&gt;
В результате переменная x получит значение 125.&lt;br /&gt;
&lt;br /&gt;
В JavaScript действуют следующие правила передачи аргументов функции:&lt;br /&gt;
&lt;br /&gt;
    * Аргументы примитивных типов передаются функции по значению. Иными словами, формальным аргументам присваиваются значения фактических аргументов на момент вызова и, если даже операторы в теле функции изменят значение какого-либо аргумента, то это изменение не коснется переменной, чье значение передавалось в качестве аргумента.&lt;br /&gt;
    * Объекты (и встроенные, и определенные пользователем) передаются по ссылке. Это означает, что все изменения свойств объекта в теле функции производятся непосредственно в самом объекте, а не в его локальной копии и, следовательно, сохраняются после возврата из функции. Например,&lt;br /&gt;
&lt;br /&gt;
function setBrowser(browser) {&lt;br /&gt;
   browser.name = &amp;quot;Internet Explorer&amp;quot;;&lt;br /&gt;
   browser.version = &amp;quot;5.5&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var myBrowser = {name:&amp;quot;Netscape Navigator&amp;quot;, version:&amp;quot;4.7&amp;quot;};&lt;br /&gt;
var x = myBrowser.name;	// x равно &amp;quot;Netscape Navigator&amp;quot;&lt;br /&gt;
setBrowser(myBrowser);	// объект myBrowser передается функции&lt;br /&gt;
var y = myBrowser.name;	// y равно &amp;quot;Internet Explorer&amp;quot;&lt;br /&gt;
&lt;br /&gt;
3.6.8.3. Рекурсивные функции&lt;br /&gt;
&lt;br /&gt;
Важной особенностью языка JavaScript является то, что функция может вызывать не только другие функции, но и сама себя. Такие функции называются рекурсивными; во многих случаях использование рекурсии позволяет писать краткий код вместо сложных вложенных циклов. Следует, однако, учитывать, что рекурсия работает медленнее, чем обычный цикл, и пользоваться ей только в тех случаях, когда это действительно оправдано.&lt;br /&gt;
&lt;br /&gt;
Приведем пример функции, вычисляющей факториал числа (факториал числа n равен 1 * 2 * ... * n):&lt;br /&gt;
&lt;br /&gt;
function factorial(n) {&lt;br /&gt;
  if (n &amp;lt;= 1)&lt;br /&gt;
    return 1;&lt;br /&gt;
  else&lt;br /&gt;
    return (n * factorial(n-1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Неаккуратно написанная рекурсивная функция может войти в бесконечный цикл и никогда не вернуть результата. Например, попытка вычислить факториал отрицательного числа с помощью приведенной функции приведет именно к такому результату.&lt;br /&gt;
3.6.8.4. Оператор return&lt;br /&gt;
&lt;br /&gt;
Мы видели в предыдущих примерах, что функции JavaScript могут (но не обязаны) возвращать значение. Для указания этого значения используется оператор return, который имеет две формы:&lt;br /&gt;
&lt;br /&gt;
return выражение&lt;br /&gt;
return&lt;br /&gt;
&lt;br /&gt;
Первая форма оператора завершает выполнение функции и возвращает значение выражения. Функция, содержащая такой оператор return, должна вызываться как часть выражения присваивания, например x = 2 * cube(a).&lt;br /&gt;
&lt;br /&gt;
Вторая форма оператора завершает выполнение функции и возвращает значение undefined. Функция, содержащая такой оператор return, должна вызываться как оператор, например setBrowser(myBrowser).&lt;br /&gt;
&lt;br /&gt;
Если тело функции не содержит оператора return, то ее выполнение завершается с выполнением последнего оператора тела и возвращается значение undefined.&lt;br /&gt;
3.6.8.5. Объект arguments&lt;br /&gt;
&lt;br /&gt;
При входе в тело функции создается локальный объект arguments, который имеет следующие свойства:&lt;br /&gt;
&lt;br /&gt;
    * Свойство callee с атрибутами { DontEnum }. Начальным значением этого свойства является исполняемый в данный момент объект Function. Это свойство обеспечивает возможность рекурсивного вызова безымянных функций.&lt;br /&gt;
    * Свойство length с атрибутами { DontEnum }. Начальным значением этого свойства является количество фактических аргументов, переданных функции при ее вызове.&lt;br /&gt;
    * Массив значений фактических аргументов функции. Для доступа к значениям массива используется синтаксис:&lt;br /&gt;
&lt;br /&gt;
      функция.arguments[i]&lt;br /&gt;
&lt;br /&gt;
      где функция — идентификатор, задающий имя текущей функции, а i — номер аргумента, начиная с нуля.&lt;br /&gt;
&lt;br /&gt;
Этот объект полезен в тех случаях, когда мы заранее не знаем количества аргументов, которые будут переданы данной функции. В следующем примере функция initArray создает новый массив и копирует в него список своих фактических аргументов.&lt;br /&gt;
&lt;br /&gt;
function initArray() {&lt;br /&gt;
  this.length = initArray.arguments.length;&lt;br /&gt;
  for (var i = 0; i &amp;lt; this.length; i++)&lt;br /&gt;
    this[i] = initArray.arguments[i];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var myFriends = new initArray(&amp;quot;Михаил&amp;quot;, &amp;quot;Максим&amp;quot;, &amp;quot;Сергей&amp;quot;, &amp;quot;Леонид&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
[[Логічні оператори]]&lt;/div&gt;</summary>
		<author><name>Онищенко Сергей</name></author>	</entry>

	</feed>