Ръководство за параметрите на обекта на аргументите и останалите.

Функционални аргументи

Когато създаваме функция, често задаваме параметри, които да използваме в тялото на функцията. Ние предаваме стойностите за тези параметри, когато извикваме или извикваме функцията. Ние наричаме тези стойности аргументи. Нека да разгледаме пример за основна функция.

function add(valOne, valTwo) {
  return valOne + valTwo;
}
add(1, 4);
//Returns ---> 5

В горния пример създаваме функция, наречена add. Задаваме параметрите valOne и valTwo вътре в скобите на функцията. В тялото на функцията сумираме двете стойности заедно. Когато функцията бъде извикана, ние предаваме два аргумента 1 и 4, които стават valOne и valTwo.

Аргументите възразяват

JavaScript предоставя обект, наречен обект аргументи, който е достъпен от вътрешността на функция. Обектът arguments изглежда подобен на масив, но не е масив, така че не можете да използвате методи на масив, освен ако не го конвертирате в масив. Обектът arguments е списък, така че елементите имат индекси, следователно можем да преминем през елементите с помощта на for цикъл. Нека да разгледаме, използвайки предишния пример. Вместо да сумираме параметрите, ще console.log обекта аргументи.

function add(valOne, valTwo) {
  console.log(arguments);
}
add(1, 4);
//Returns ---> Arguments(2) [1, 4, callee: ƒ, Symbol(Symbol.iterator): ƒ]

Когато се извика функцията add, ние предаваме два аргумента. Можем да ги видим в обекта аргументи, отпечатан от console.log във функцията. Ако искаме да получим достъп до аргументите, можем да го направим, като използваме индексите на аргументите, както е показано по-долу.

function add(valOne, valTwo) {
  console.log(arguments[0], arguments[1]);
}
add(1, 4);
//Returns ---> 1 4

Можем също да използваме цикъл, за да итерираме аргументите точно както бихме направили с масив.

function add(valOne, valTwo) {
  for(let i = 0; i < arguments.length; i++) {
    console.log(arguments[i]);
  }
}
add(1, 4);
//Returns --->
1
4

Струва си да се отбележи, че не можем да получим достъп до обекта arguments, когато използваме функция със стрелка. Ако се опитаме да направим това, ще получим грешка, както показва примерът по-долу.

const add = (valOne, valTwo) => {
 console.log(arguments);
}
add(1, 4);
//Returns --->
VM320:2 Uncaught ReferenceError: arguments is not defined
    at add (<anonymous>:2:14)
    at <anonymous>:4:1

Останалият параметър

ES6 въведе параметъра rest. Това ни позволява да решаваме същите проблеми като обекта arguments, но е много по-просто. Синтаксисът за остатъка от параметъра е същият като оператора за разпространение, използващ три точки (...), но работи много по-различно. Останалият параметър ще събере всичко в един масив. Ако искаме да използваме функция, която приема произволен брой аргументи или ако имаме много дълъг списък от аргументи за предаване във функцията (като азбуката), това е много полезно.

За да използваме параметъра rest, ние го поставяме вътре в скобите на функцията, като използваме три точки, последвани от име, така че да имаме достъп до масива от вътрешността на функцията. Нека да разгледаме един пример.

function add(...values) {
  console.log(values);
}
add(1, 4);
//Returns ---> (2) [1, 4]

В горния пример използваме същата функция от предишните примери, но този път използваме параметъра rest вътре в скобите и задаваме името на стойности. Ние конзолираме това в тялото на функцията. Когато функцията бъде извикана, можем да видим, че получаваме масив, съдържащ аргументите, отпечатани на екрана.

Има някои разлики с параметъра rest в сравнение с обекта arguments. Параметърът rest ще върне само останалите аргументи, които вече не са съпоставени с предишен параметър. Следователно, ако трябваше да зададем параметър за valueOne, масивът от стойности вече ще съдържа само един елемент, както е показано в примера по-долу.

function add(valueOne, ...values) {
  console.log(values);
}
add(1, 4);
//Returns ---> [4]

Ако искате да зададете параметри и да използвате параметъра rest, важно е да имате предвид, че трябва да зададете параметрите преди параметъра rest, като се има предвид, че параметърът rest връща останалите стойности. Ако първо сте използвали параметъра rest и след това сте задали параметъра valueOne, ще получите синтактична грешка, както е показано по-долу.

function add(...values, valueOne) {
  console.log(valueOne);
}
add(1, 4);
//Returns ---> Uncaught SyntaxError: Rest parameter must be last formal parameter

И накрая, можем също така да използваме параметъра rest вътре във функция със стрелка, за разлика от обекта arguments!

const add = (...values) => {
 console.log(values);
}
add(1, 4);
//Returns ---> (2) [1, 4]

Надявам се, че тази статия ви е харесала, моля, не се колебайте да публикувате всякакви коментари, въпроси или отзиви и ме последвайте за повече съдържание!

Повече съдържание в PlainEnglish.io. Регистрирайте се за нашия безплатен седмичен бюлетин. Следвайте ни в Twitter иLinkedIn. Присъединете се към нашата общност Discord.