САЙТ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ НА РУССКОМ ЯЗЫКЕ
×

JS Учебник

JS Главная JS Введение JS Установка JS Вывод JS Синтаксис JS Заявления JS Комментарии JS Переменные JS Операторы JS Арифметика JS Присваивания JS Типы данных JS Функции JS Объекты JS Область JS События JS Строки JS Методы строк JS Числа JS Методы чисел JS Массивы JS Методы массива JS Сортировка массива JS Итерация массива JS Даты JS Формат даты JS Метод получения дат JS Методы набора... JS Математические... JS Случайные числа JS Булевы JS Сравнение... JS Заявления if...else JS Заявление switch JS Цикл for JS Цикл while JS Заявление break... JS Преобразование... JS Битовые... JS Регулярные выражения JS Ошибки JS Отладчик JS Подъемный JS Строгий JS Ключевое слово this JS Руководство стиля JS Практика JS Распространенные ошибки JS Эффективность JS Зарезервированные слова JS Версии JS Версия ES5 JS Версия ES6 JS JSON

JS Формы

JS Формы JS Формы API

JS Объекты

Определение объекта Свойства объекта Методы объекта Доступ к объекту Конструкторы объекта Прототипы объекта Объект ECMAScript 5

JS Функции

Определение функции Параметры функции Вызов Функции Вызвать Функцию Применение функции Закрытие Функции

JS HTML DOM

DOM Введение DOM Методы DOM Документы DOM Элементы DOM HTML DOM CSS DOM Анимация DOM События DOM Слушатель события DOM Навигация DOM Узлы DOM Коллекции DOM Список узлов

JS Браузера BOM

JS Окно JS Экран JS Местоположение JS История JS Навигатор JS Всплывающее окна JS Синхронизация JS Cookies

JS AJAX

AJAX Введение AJAX XMLHttp AJAX Запрос AJAX Ответ AJAX XML Файл AJAX PHP AJAX ASP AJAX База данных AJAX Приложения AJAX Примеры

JS JSON

JSON Введение JSON Синтаксис JSON или XML JSON Типы данных JSON Парсинг JSON Строки JSON Объекты JSON Массивы JSON PHP JSON HTML JSON JSONP



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



JavaScript function не выполняет никакой проверки значений параметров (аргументов).


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

Ранее в этом руководстве вы узнали, что функции могут иметь параметры:

function functionName(parameter1, parameter2, parameter3) {
  // код для выполнения
}

Параметры функции - это имена, перечисленные в определении функции.

Аргументы функции - это реальные значения, переданные (и полученные) функцией.


Правила параметров

Определения функций JavaScript не определяют типы данных для параметров.

JavaScript функции не выполняют проверку типов передаваемых аргументов.

JavaScript функции не проверяют количество полученных аргументов.


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

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

Иногда это допустимо, но иногда лучше присвоить параметру значение по умолчанию:

Пример

function myFunction(x, y) {
  if (y === undefined) {
    y = 0;
  }
}
Попробуйте сами »

ECMAScript 2015 разрешает значения параметров по умолчанию в объявлении функции:

function (a=1, b=1) {
  // код функции
}


Объект arguments

JavaScript функции имеют встроенный объект, называемый объектом arguments.

Объект argument содержит массив аргументов, используемых при звонке (вызове) функции.

Таким образом, вы можете просто использовать функцию, чтобы найти (например) наибольшее значение в списке чисел:

Пример

x = findMax(1, 123, 500, 115, 44, 88);

function findMax() {
  var i;
  var max = -Infinity;
  for (i = 0; i < arguments.length; i++) {
    if (arguments[i] > max) {
      max = arguments[i];
    }
  }
  return max;
}
Попробуйте сами »

Или создайте функцию для суммирования всех входных значений:

Пример

x = sumAll(1, 123, 500, 115, 44, 88);

function sumAll() {
  var i;
  var sum = 0;
  for (i = 0; i < arguments.length; i++) {
    sum += arguments[i];
  }
  return sum;
}
Попробуйте сами »

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


Аргументы передаются по значению

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

Аргументы JavaScript передаются по значению: функция получает только значения, а не расположение аргумента.

Если функция изменяет значение аргумента, она не изменяет исходное значение параметра.

Изменения аргументов не видны (не отражаются) вне функции.


Объекты передаются по ссылке

В JavaScript ссылки на объекты - это значения.

Из-за этого объекты будут вести себя так, как они передаются по ссылке:

Если функция изменяет свойство объекта, она изменяет исходное значение.

Изменения свойств объекта видны (отражаются) вне функции.