Добавляем...


  Принципы передачи параметров
Спомощью функций в JavaScript можно создавать многократно используемые фрагменты сценария. Созданные должным образом функции являются абстрактными - они могут использоваться во многих ситуациях и полностью автономны, а данные передаются в функцию и от нее посредством интерфейса. JavaScript вполне позволяет создание таких функций, но многие разработчики не используют возможность применения модульного программного кода, полагаясь на глобальные переменные и различные побочные эффекты. И этот факт вызывает большое сожаление, потому что JavaScript поддерживает все возможности функций, необходимые для создания модульного программного кода, и даже некоторые "продвинутые" возможности типа переменного числа параметров. В этой главе предлагается обсудить основы построения функций, а в следующих двух главах мы продемонстрируем то, что за всем этим скрывается истинная сила JavaScript, сосредоточенная в соответствующих объектах!
Основы построения функций
Для определения функции в JavaScript обычно используется ключевое слово function, после которого указываются уникальное имя функции, список параметров (который может быть пустым) и блок операторов, заключенных в фигурные скобки. Базовый синтаксис таков:

function имя-функции(список-параметров)
{
операторы
)
Ниже определяется простая функция sayHello без параметров:
function sayHello()
{
alert("Привет!");
}
Для вызова этой функции в сценарии следует использовать оператор sayHello();

Принципы передачи параметров
Очень часто необходимо передать функции информацию, которая должна изменить действие этой функции или использоваться в вычислениях. Данные, передаваемые функциям, - будь то литералы или переменные - называются параметрами, или аргументами. Рассмотрим следующую модификацию функции sayHello, в которой ей можно передать один параметр someName:

function sayHello(someName)
{
if (someName ! = "")
alert("Привет, "+someName);
else
alert("He стесняйся!");
}

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

sayHello("Джордж");

В результате его выполнения получим:
Привет, Джордж

Вызов же функции с помощью sayHello(""); или просто без параметров, sayHello(); приведет к появлению другого диалогового окна:
не стесняйся!

Когда вызывается функция, ожидающая аргументов, а аргументы ей не передаются или передаются не все, JavaScript заполняет аргументы, которые не были переданы, значениями undefined. Такое поведение хотя и удобно, но потенциально опасно. Даже если кому-то нравится, что можно указывать не все параметры, когда они не все используются, сама функция должна быть написана так, чтобы она не выполняла несоответствующих действий с неопределенными значениями. Короче говоря, хорошей идеей считается обязательная проверка всех передаваемых параметров.
    Функции могут получать не только значения литералов, но и переменные, а также любые комбинации переменных и литералов. Рассмотрим функцию addThree, которая получает три значения и отображает результат их сложения в диалоговом окне.

function addThree(argl, arg2, arg3)
{
alert(argl+arg2+arg3);
}
var x = 5, у = 7;
addThree(x, y, 11);

В результате его выполнения получим:   "23"

При передаче параметров будьте внимательны, поскольку в JavaScript используется слабый контроль типов: результаты могут отличаться от интуитивно ожидаемых. Выясним, например, что случится, если вызвать addThree так:

addThree(5, 11, "Будьте внимательны!");

В результате автоматического преобразования типов будет отображена строка: "16Будте внимательны!"

С помощью операции type of можно усовершенствовать нашу функцию так, чтобы она сообщала об ошибках.

function addThree(argl, arg2, arg3)
{
if ( (typeof argl != "number") I I (typeof arg2 != "number") || (typeof arg3 ! = "number") )
alert("Ошибка: допустимы только числа.");
else
alert(argl+arg2+arg3);
}

Далее будет представлен ряд других возможностей повышения надежности функций, а пока что давайте сосредоточимся на возвращении данных из функции.
назад: далее: Операторы return


добавить комментарий
(без перезагрузки и регистрации)


10 случайных разделов

Что ищем на сайте ?


Примеры кода на сайте







@ 2008-2011 Amber
При использовании материалов ссылка на сайт обязательна
Яндекс.Метрика