JavaScript Параметры функции
JavaScript function
не выполняет никакой проверки значений параметров (аргументов).
Параметры и аргументы функции
Ранее в этом руководстве вы узнали, что функции могут иметь параметры:
function functionName(parameter1, parameter2, parameter3) {
// код для выполнения
}
Параметры функции - это имена, перечисленные в определении функции.
Аргументы функции - это реальные значения, переданные (и полученные) функцией.
Правила параметров
Определения функций JavaScript не определяют типы данных для параметров.
JavaScript функции не выполняют проверку типов передаваемых аргументов.
JavaScript функции не проверяют количество полученных аргументов.
Параметры по умолчанию
Если функция вызывается с пропущенными аргументами (меньше, чем объявлено), то пропущенные значения устанавливаются в: undefined
Иногда это допустимо, но иногда лучше присвоить параметру значение по умолчанию:
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 ссылки на объекты - это значения.
Из-за этого объекты будут вести себя так, как они передаются по ссылке:
Если функция изменяет свойство объекта, она изменяет исходное значение.
Изменения свойств объекта видны (отражаются) вне функции.