<< Back


Локальные переменные

Функция может содержать локальные переменные. Такие переменные видны только внутри функции:

function showMessage() {
  var message = 'Привет, я - Вася!'; // локальная переменная

  console.log( message );
}

showMessage(); // 'Привет, я - Вася!'

console.log( message ); // <-- будет ошибка, т.к. переменная видна только внутри

Внешние переменные

Функция может обратиться ко внешней переменной.
Доступ при таком обращении возможен не только на чтение, но и на запись. При этом, так как переменная внешняя, то изменения будут видны и снаружи функции:

var userName = 'Вася';

function showMessage() {
  userName = 'Петя'; // (1) присвоение во внешнюю переменную

  var message = 'Привет, я ' + userName;
  consol.log( message );
}

showMessage();

console.log( userName ); // Петя, значение внешней переменной изменено функцией

Конечно, если бы внутри функции, в строке(1), была бы объявлена своя локальная переменная var userName, то все обращения использовали бы её, и внешняя переменная осталась бы неизменной.


Параметры и аргументы функции

Параметры функции -

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

Аргументы (входные данные) функции -

  • произвольный список значений, передаваемых функции в момент вызова.

______________________________________________________________

Типы аргументов функции могут быть как примитивами (строки, числа, boolean), так и объектами (включая массивы или функции):

  • Значения-примитивы передаются в функции по значению. Значение копируется, так что если функция изменит значение параметра, это изменение не будет иметь внешнего эффекта.

  • Объекты передаются в функцию по ссылке: переприсваивание самой ссылки также не имеет внешнего эффекта, но если функция изменяет свойства объекта, то эти изменения будут видимы вне функции (побочный эффект).


Аргументы по умолчанию

Функцию можно вызвать с любым количеством аргументов. Если параметр не передан при вызове – он считается равнымundefined.
Например, функцию показа сообщенияshowMessage(from, text)можно вызвать с одним аргументом:

showMessage("Маша");

При этом можно проверить, и если параметр не передан – присвоить ему значение «по умолчанию»:

function showMessage(from, text) {
  if (text === undefined) {
    text = 'текст не передан';
  }

  console.log( from + ": " + text );
}

showMessage("Маша", "Привет!"); // Маша: Привет!
showMessage("Маша"); // Маша: текст не передан

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

Для указания значения «по умолчанию», то есть, такого, которое используется, если аргумент не указан, используется два способа:

  1. Можно проверить, равен ли аргументundefined, и если да – то записать в него значение по умолчанию. Этот способ продемонстрирован в примере выше.

  2. Использовать оператор||:

    function showMessage(from, text) {
      text = text || 'текст не передан';
      ...
    }
    

    Второй способ считает, что аргумент отсутствует, если передана пустая строка,0, или вообще любое значение, которое в логическом контексте являетсяfalse.

Если аргументов передано больше, чем надо, напримерshowMessage("Маша", "привет", 1, 2, 3), то ошибки не будет. Но, чтобы получить такие «лишние» аргументы, нужно будет прочитать их из специального объектаarguments.

results matching ""

    No results matching ""