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

Функции пользователя

В языке JavaScript определение функций имеет синтаксис:

function name(список_параметров) {

//тело функции-список выражений;

return (значение)

}

Параметры в списке разделяются запятыми и могут отсутствовать. Оператор return используется для выхода из функции и возврата значе­ния в вызвавшее функцию выражение. Возвращаемое значение и сам оператор return могут отсутствовать. Например:

function hello() {

alert(“Hello World!”)

}

hello(); //выведет фразу «Hello World!»

Как и в С++ вызов функции производится следующим образом: name(arglist);

Если в описании функции определено несколько параметров, а при вызове эти параметры функции не передаются, то неоп­ределенным параметрам присваивается значение undefined. Пример:

<!-- пример pr12 -->

<html>

<body>

<script type="text/javascript">

function sum(arg1, arg2, arg3) {

var res = arg1 + arg2;

if (arg3){ res = res + arg3;}

else alert(arg3);//Выводит значение undefined

return res;

}

var x = 1; var y = 2; var z = 3;

alert(sum(x,y,z)); //выведет на экран 6

alert(sum(x,y));//выведет 3, прибавление arg3 к res //не произво­дится, так как arg3=undefined.

alert(sum(x));//Выводит значение NaN

</script>

</body>

</html>

Передача параметров по значению и по ссылке

Базовые типы данных (числа, строки, булевы переменные) переда­ются в качестве параметров функции по значению, и не изменяются во время выполнения функции. Данные объектных типов, например массивы, передаются по ссылке (адресу) и могут изменяться в функции. Пример, иллюстрирующий данное поведение, приведен ниже:

<!-- пример pr13 -->

<html>

<body>

<script type="text/javascript">

function passval(arg1) {

var arg=5; arg1=arg++;

return arg1;

}

var x = 1; var y = 2;

alert(passval(x)); //выведет в окно 5

alert(x); //выведет 1, значение x не изменится

function passRef(arr1) {

arr1[0] = "NEWfirst";

}

var y = ["first", "second"];//массив

passRef(y);

alert(y);//выведет в окно "NEWfirst", second

</script>

</body>

</html>

При вызове в функцию передается ссылка на объект y. Любые изменения объекта не исчезнут после завершения функции. Учитывая такую разницу в поведении типов, необходимо определять, с каким типом приходится работать. Для этого используются операторы typeof и instanceof.

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

Существует два вида переменных: глобальные, которые объявлены перед функцией и видны во всем документе во время выполнения скрипта и локальные, которые объявляются при помощи оператора var и видны только внутри функций. Если мы используем необъявленную внутри функции переменную, то это будет либо глобальная переменная, либо свойство объекта window. Если объявлена локальная переменная, то доступ к глобальной переменной с тем же именем закрывается – все действия переменных будут происходить с локальной переменной. Аргументы функции автоматически становятся локальными переменными. 

Если перед именем переменной ключевое слово var не ставится, то переменная также считается глобальной и принадлежат объекту window как свойство.

<!-- пример pr14 -->

<html>

<body>

<script type="text/javascript">

var x="global2";

function myFunc() {

var x = "local";//переопределение глобал_переменной

y = "global1";

var z=5;

}

myFunc();

alert(window.y); //вернет global1

alert(x); //вернет слово global2

alert(z); //ошибка

</script>

</body>

</html>

Функции в JavaScript также считаются объектами(call objekt). Ар­гументы и локальные переменные являются свойствами такого объекта.

Всегда можно использовать объект arguments, при помощи которого и можно было бы добраться до параметров. Могут также использоваться функциональные литералы вида:

var f=function(x){return x*x}