Способы передачи параметров в функцию

При вызове в функцию передается копия значения переменной. Таким образом, изменение значения внутри функции не затронет значение исходной переменной:

function test(x) {
   x = 10;
}
let x = 20;
test(x);
console.log('x = ' + x); // x = 20

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

function test(arr) {
   arr[0] = 33;
}
let a = [1, 2];
test(a);
console.log(a); // [ 33, 2 ]

Как видно из примера, массив изменился.

Если функция принимает отдельные параметры или указан оператор REST, а данные хранятся в массиве, то можно распаковать массив (листинг 10.6), указав перед ним три точки (оператор SPREAD).

Листинг 10.6. Оператор SPREAD

function sum(x, y, ...arr) {
   let z = x + y;
   for (let i = 0; i < arr.length; i++) {
      z += arr[i];
   }
   return z;
}
console.log( sum( 5, 6, 7, 20 ) );      // 38
console.log( sum( ...[5, 6, 7, 20] ) ); // 38
console.log( sum( 5, 6, ...[7, 20] ) ); // 38

Учебник по Node.js и JavaScript
Учебник по JavaScript (Node.js) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов