Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
JavaScript_основы.doc
Скачиваний:
8
Добавлен:
04.11.2018
Размер:
322.05 Кб
Скачать

3.11.2. Расположение функций внутри html-документа

Обычно функции принято располагать в разделе head HTML-документа (листинг 3.12) или в отдельном файле с расширением js (листинги 3.13 и 3.14). Хотя функции могут располагаться и в разделе body.

Листинг 3.12. Функция расположена в разделе HEAD

<HTML>

<HEAD>

<TITLE>Функции</TITLE>

<SCRIPT language="JavaScript">

<!--

function f_Sum (m_x, m_y) {

return (m_x + m_y);

}

//-->

</SCRIPT>

</HEAD>

<BODY>

<SCRIPT language="JavaScript">

<!--

var m_Var, m_Var1=5, m_Var2=3;

m_Var = f_Sum (m_Var1, m_Var2);

document.write(m_Var);

//-->

</SCRIPT>

</BODY>

</HTML>

Листинг 3.13. Функция вынесена в отдельный файл script.js

<HTML>

<HEAD>

<TITLE>Функции</TITLE>

<SCRIPT language="JavaScript" src="script.js">

</SCRIPT>

</HEAD>

<BODY>

<SCRIPT language="JavaScript">

<!--

var m_Var, m_Var1=5, m_Var2=3;

m_Var = f_Sum (m_Var1, m_Var2);

document.write(m_Var);

//-->

</SCRIPT>

</BODY>

</HTML>

Листинг 3.14. Содержимое файла script.js

function f_Sum (m_x, m_y) {

return (m_x + m_y);

}

Создать файл script.js можно с помощю Блокнота.

3.11.3. Рекурсия. Вычисление факториала

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

Листинг 3.15. Вычисление факториала

<HTML>

<HEAD>

<TITLE>Вычисление факториала</TITLE>

<SCRIPT language="JavaScript">

<!--

function f_Factorial (m_x) {

if (m_x == 0 || m_x == 1) return 1;

else return (m_x * f_Factorial (m_x - 1));

}

//-->

</SCRIPT>

</HEAD>

<BODY>

<SCRIPT language="JavaScript">

<!--

var m_Str1;

m_Str1=window.prompt("Вычисление факториала\nВведите число", "");

if (m_Str1==null) {

document.write("Вы нажали Отмена");

}

else {

document.write("Факториал числа " + m_Str1 + " = ");

document.write(f_Factorial (parseInt(m_Str1)));

}

//-->

</SCRIPT>

</BODY>

</HTML>

3.11.4. Глобальные и локальные переменные

Глобальные переменные — это переменные, объявленные вне функции. Глобальные переменные видны в любой части программы, включая функции.

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

Механизм, регулирующий такое поведение, называется областью видимости переменных. Он продемонстрирован в листинге 3.16.

Листинг 3.16. Глобальные и локальные переменные

<HTML>

<HEAD>

<TITLE>Глобальные и локальные переменные</TITLE>

<SCRIPT language="JavaScript">

<!--

function f_Sum () {

var m_Var1=5;

var m_Numer=1;

document.write("Локальная переменная m_Var1 = " + m_Var1 + "<BR>");

document.write("Локальная переменная m_Numer = " + m_Numer + "<BR>");

document.write("Глобальная переменная m_Var2 = " + m_Var2 + "<BR>");

return m_Var1+m_Var2;

}

//-->

</SCRIPT>

</HEAD>

<BODY>

<SCRIPT language="JavaScript">

<!--

var m_Var1, m_Var2, m_Var3;

m_Var1=10;

document.write("Глобальная переменная m_Var1 = " + m_Var1 + "<BR>");

m_Var2=7;

m_Var3=f_Sum ();

document.write("Сумма m_Var1 + m_Var2 = " + m_Var3 + "<BR>");

document.write("Глобальная переменная m_Var1 осталась = ");

document.write(m_Var1 + "<BR>");

document.write("Локальная переменная m_Numer = " + typeof(m_Numer));

document.write(" , т.е. не видна вне тела функции");

//-->

</SCRIPT>

</BODY>

</HTML>

В окне Web-браузера получим следующий результат:

Гло.переменная m_Var1 = 10

Лок. переменная m_Varl = 5

Л. переменная m_Numer = 1

Г. переменная m_Var2 = 7

Сумма m_Var1 + m_Var2 = 12

Г-я переменная m_Var1 осталась = 10

Лок. переменная m_Numer = undefined , т. е. не видна вне тела функции

Как видно из листинга 3.16, переменная m Numer, объявленная внутри функции f_sum(), не доступна вне функции. Глобальную переменную m_Varl не затронуло объявление внутри функции одноименной локальной переменной и её изменение. А глобальная переменная m_Var2 видна внутри функции m_Sum().

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]