Відмінності між версіями «Підпрограми в JavaScript»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
Рядок 59: Рядок 59:
 
&nbsp;&nbsp;<span style="color:blue;">return</span> x+y;<br/>
 
&nbsp;&nbsp;<span style="color:blue;">return</span> x+y;<br/>
 
}<br/>
 
}<br/>
 +
</font>
 +
</code>
 +
 +
<h1>Область видимості функції</h1>
 +
Змінні визначені всередині функції невидимі поза цією функцією, так як змінні визначаються в області видимості всередині функції. Будь-яка функція має доступ до всіх змінних та інших функцій які визначені у тій же області видимості де і сама функція була визначена. Іншими словами, функція визначена в глобальній області видимості має доступ до всіх змінних визначених у глобальній області видимості. Функція визначена всередині іншої функції має доступ до всіх змінних визначених у батьківській функції і будь-яких інших змінних до яких має доступ батьківська функція.
 +
 +
'''Приклад'''<br/>
 +
<code>
 +
<font style="font-size:10pt">
 +
<span style="color:green;">// Визначення змінних в глобальній області видимості</span><br/>
 +
<span style="color:blue;">var</span> num1 = 20,<br/>
 +
&nbsp;&nbsp;num2 = 3,<br/>
 +
&nbsp;&nbsp;name = "Test";<br/>
 +
 +
<span style="color:green;">// Ця функція визначена в глобальній області видимості</span><br/>
 +
<span style="color:blue;">function</span> multiply() {<br/>
 +
&nbsp;&nbsp;<span style="color:blue;">return</span> num1 * num2;<br/>
 +
}
 +
 +
multiply(); <span style="color:green;">// функція поверне 60</span><br/>
 +
 +
<span style="color:blue;">function</span> getScore () {<br/>
 +
<span style="color:blue;">var</span> num1 = 2,<br/>
 +
&nbsp;&nbsp;&nbsp;&nbsp;num2 = 3;<br/>
 +
<span style="color:green;">//Приклад вкладеної функції</span><br/>
 +
&nbsp;&nbsp;<span style="color:blue;">function</span> add() {<br/>
 +
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue;">return</span> name + " scored " + (num1 + num2);<br/>
 +
&nbsp;&nbsp;}<br/> 
 +
&nbsp;&nbsp;&nbsp;<span style="color:blue;">return</span> add();<br/>
 +
}<br/>
 +
 +
getScore(); <span style="color:green;">// функція поверне "Test scored 5"</span><br/>
 +
 
</font>
 
</font>
 
</code>
 
</code>

Версія за 14:28, 19 травня 2013

Підпрограми

При створенні програми розумно виділити в ній логічно незалежні частини (підпрограми). Кожну частину при необхідності можна розбити на окремі підпрограми і т. д. Розбиття програми на підпрограми полегшує процес відлагодження, оскільки дозволяє відлагоджувати кожну підпрограму окремо. Один раз створену і відлагоджену підпрограму можна використовувати довільну кількість разів. У багатьох мовах програмування поняття підпрограми реалізується за допомогою конструкцій процедур, функцій, модулів і т.д. Основним елементом для реалізації підпрограм в мові JavaScript є функція.

Створення та використання функцій

В мові програмування JavaScript функції поділяються на іменовані функції та анонімні. Основна їх відмінність в тому, що доступ до іменованої функції можна отримати скрізь, а до анонімної - тільки після її оголошення.

Синтаксис оголошення іменованої функції
function ім'я(параметри)
{ код }

Синтаксис оголошення анонімної функції
var ім'я = function(параметри)
{ код }

або
var ім'я = new Function(параметри, 'код')

Причому синтаксис new Function використовується досить рідко, в основному для отримання функції з тексту, наприклад, динамічно завантаженого з сервера в процесі виконання скриптів.

Приклад оголошення та використання іменованої функції
// функція sum визначена нижче її виклику.
var a = sum(1,1);

function sum(x,y)
{
  return x+y;
}

Приклад оголошення та використання анонімної функції
//При виконанні даного коду буде отримано помилку так як під час виклику
//функція sum ще не оголошена

var a = sum(1,1);

var sum = function(x,y)
{
  return x+y;
}

Область видимості функції

Змінні визначені всередині функції невидимі поза цією функцією, так як змінні визначаються в області видимості всередині функції. Будь-яка функція має доступ до всіх змінних та інших функцій які визначені у тій же області видимості де і сама функція була визначена. Іншими словами, функція визначена в глобальній області видимості має доступ до всіх змінних визначених у глобальній області видимості. Функція визначена всередині іншої функції має доступ до всіх змінних визначених у батьківській функції і будь-яких інших змінних до яких має доступ батьківська функція.

Приклад
// Визначення змінних в глобальній області видимості
var num1 = 20,
  num2 = 3,
  name = "Test";

// Ця функція визначена в глобальній області видимості
function multiply() {
  return num1 * num2;
}

multiply(); // функція поверне 60

function getScore () {
var num1 = 2,
    num2 = 3;
//Приклад вкладеної функції
  function add() {
    return name + " scored " + (num1 + num2);
  }
   return add();
}

getScore(); // функція поверне "Test scored 5"