Параметры функции
Функция в JavaScript может принимать параметры. Передаваемые параметрам значения еще называют аргументами функции. Параметры представляют способ передачи в функцию данных. Параметры указываются в скобках после названия функции. Например, определим простейшую функцию, которая принимает один параметр:
function print(message){
console.log(message);
}
print("Hello JavaScript");
print("Hello METANIT.COM");
print("Function in JavaScript");
Функция print()
принимает один параметр - message. Поэтому при вызове функции мы можем передать для него значение, например, некоторую строку:
print("Hello JavaScript");
При этом в отличие от ряда других языков программирования мы в принципе можем не передавать значения параметрам. Если параметру не передается значение, тогда он будет иметь значение undefined
:
function print(message){
console.log(message);
}
print();
Если функция принимает несколько параметров, то они перечисляются через запятую. При вызове функции с несколькими параметрами значения передаются параметрам по позиции. То есть первое значение передается первому параметру, второе значение - второму и так далее:
function sum(a, b){
const result = a + b;
console.log(result);
}
// 8
sum(2, 6);
// 9
sum(4, 5);
// 120
sum(109, 11);
Необязательные параметры и значения по умолчанию
Функция может принимать множество параметров, но при этом часть или все параметры могут быть необязательными. Если для параметров не передается значение, то по умолчанию они имеют значение undefined
. Однако иногда бывает необходимо, чтобы параметры обязательно имели какие-то значения, например, значения по умолчанию:
function sum(x = 8, y = 5){
const z = x + y;
console.log(z);
}
// 13
sum();
// 11
sum(6);
// 10
sum(6, 4)
Если параметрам x и y не передаются значения, то они получаются в качестве значений числа 5
и 8
соответствено.
При этом значение параметра по умолчанию может быть производным, представлять выражение:
function sum(x = 8, y = 10 + x){
const z = x + y;
console.log(z);
}
// 26
sum();
// 22
sum(6);
// 10
sum(6, 4)
Массив arguments
При необходимости мы можем получить все переданные параметры через глобально доступный массив arguments
. При этом даже не важно, что при определении функции мы не указали никаких параметров, мы все равно можем их передать и получить их значения через массив arguments
:
function sum(){
let result = 0;
for(const n of arguments)
result += n;
console.log(result);
}
// 6
sum(6);
// 10
sum(6, 4)
// 15
sum(6, 4, 5)
Неопределенное количество параметров
С помощью оператора ...
(многоточие) мы можем указать, что с помощью параметра можно передать переменное количество значений:
function display(season, ...temps){
console.log(season);
for(index in temps){
console.log(temps[index]);
}
}
display("Весна", -2, -3, 4, 2, 5);
display("Лето", 20, 23, 31);
В данном случае второй параметр ...temps
указывает, что вместо него можно передать разное количество значений. В самой функции temps фактически представляет массив переданных значений, которые мы можем получить. При этом несмотря на это, при вызове функции в нее передается не массив, а именно отдельные значения. Консольный вывод:
Весна
-2
-3
4
2
5
Лето
20
23
31
Функции в качестве параметров
Функции могут выступать в качестве параметров других функций:
function sum(x, y){
return x + y;
}
function subtract(x, y){
return x - y;
}
function operation(x, y, func){
const result = func(x, y);
console.log(result);
}
console.log("Sum");
// 16
operation(10, 6, sum);
console.log("Subtract");
// 4
operation(10, 6, subtract);
Функция operation
принимает три параметра: x
, y
и func
. func
- представляет функцию, причем на момент определения operation
не важно, что это будет за функция. Единственное, что известно, что функция func
может принимать два параметра и возвращать значение, которое затем отображается в консоли браузера. Поэтому мы можем определить различные функции (например, функции sum
и subtract
в данном случае) и передавать их в вызов функции operation
.