From daa1a2aff136fa9da1fcc97d7da97a2036fabc77 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 14:51:47 +0100 Subject: unslug uk: move --- .../reference/functions/rest_parameters/index.html | 211 +++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 files/uk/web/javascript/reference/functions/rest_parameters/index.html (limited to 'files/uk/web/javascript/reference/functions/rest_parameters') diff --git a/files/uk/web/javascript/reference/functions/rest_parameters/index.html b/files/uk/web/javascript/reference/functions/rest_parameters/index.html new file mode 100644 index 0000000000..f117aecc60 --- /dev/null +++ b/files/uk/web/javascript/reference/functions/rest_parameters/index.html @@ -0,0 +1,211 @@ +--- +title: Залишкові параметри +slug: Web/JavaScript/Reference/Functions/решта_параметрів +tags: + - JavaScript + - Rest + - параметри + - функції +translation_of: Web/JavaScript/Reference/Functions/rest_parameters +--- +
{{jsSidebar("Functions")}}
+ +
Синтаксис залишкових параметрів дозволяє представити невизначену кількість аргументів у вигляді масиву.
+ +
+ +

{{EmbedInteractiveExample("pages/js/functions-restparameters.html")}}

+ + + +

Синтаксис

+ +
function f(a, b, ...theArgs) {
+  // ...
+}
+
+ +

Опис

+ +

Перед останнім параметром функції може стояти ..., в результаті решта аргументів (наданих користувачем) будуть розміщені у  "стандартному" масиві JavaScript.

+ +

Лише останній параметр може бути "залишковим".

+ +
function myFun(a, b, ...manyMoreArgs) {
+  console.log("a", a);
+  console.log("b", b);
+  console.log("manyMoreArgs", manyMoreArgs);
+}
+
+myFun("один", "два", "три", "чорити", "п'ять", "шість");
+
+// Виведе:
+// a, один
+// b, два
+// manyMoreArgs, ["три", "чотири", "п'ять", "шість"]
+ +

Різниця між залишковими параметрами та об'єктом arguments

+ +

Існують три основні відмінності між залишковими параметрами та об'єктом {{jsxref("Functions/arguments", "arguments")}}:

+ + + +

Від arguments до масиву

+ +

Залишкові параметри були запроваджені, щоб зменшити кількість шаблонного коду, спричиненого об'єктом arguments.

+ +
// До появи залишкових параметрів, "arguments" можна було перетворити на масив таким чином:
+
+function f(a, b) {
+
+  let normalArray = Array.prototype.slice.call(arguments);
+  // -- або --
+  let normalArray = [].slice.call(arguments);
+  // -- або --
+  let normalArray = Array.from(arguments);
+
+  let first = normalArray.shift(); // OK, вертає перший аргумент
+  let first = arguments.shift(); // ERROR (arguments не є справжнім масивом)
+}
+
+// Тепер ми легко можемо отримати звичайний масив за допомогою залишкових параметрів
+
+function f(...args) {
+  let normalArray = args;
+  let first = normalArray.shift(); // OK, вертає перший аргумент
+}
+ +

Приклади

+ +

Використання залишкових параметрів

+ +

У цьому прикладі перший аргумент відповідає "a", а другий "b", отже, ці іменовані аргументи можуть використовуватись як звичайні.

+ +

Однак, третій аргумент, "manyMoreArgs", буде масивом, який містить 3-й, 4-й, 5-й, 6-й ... n-й -- стільки аргументів, скільки надасть користувач.

+ +
function myFun(a, b, ...manyMoreArgs) {
+  console.log("a", a);
+  console.log("b", b);
+  console.log("manyMoreArgs", manyMoreArgs);
+}
+
+myFun("один", "два", "три", "чотири", "п'ять", "шість");
+
+// a, один
+// b, два
+// manyMoreArgs, ["три", "чотири", "п'ять", "шість"]
+ +

Нижче... хоча тут всього одне значення, останній аргумент все одно додається у масив.

+ +
// використовуємо ту саму функцію з наведеного вище прикладу
+
+myFun("один", "два", "три");
+
+// a, один
+// b, два
+// manyMoreArgs, ["три"]
+ +

Нижче... третій аргумент не був переданий, але "manyMoreArgs" все одно є масивом (хоча й порожнім).

+ +
// використовуємо ту саму функцію з наведеного вище прикладу
+
+myFun("один", "два");
+
+// a, один
+// b, два
+// manyMoreArgs, []
+ +

Кількість аргументів

+ +

Оскільки theArgs є масивом, кількість його елементів надається властивістю length:

+ +
function fun1(...theArgs) {
+  console.log(theArgs.length);
+}
+
+fun1()         // 0
+fun1(5)        // 1
+fun1(5, 6, 7)  // 3
+ +

Звичайний параметр та залишкові параметри

+ +

У наступному прикладі залишковий параметр використовується, щоб зібрати усі аргументи після першого у масиві. Далі кожен з них помножується на перший параметр, і масив повертається:

+ +
function multiply(multiplier, ...theArgs) {
+  return theArgs.map(function(element) {
+    return multiplier * element;
+  });
+}
+
+let arr = multiply(2, 1, 2, 3);
+console.log(arr); // [2, 4, 6]
+ +

Використання з об'єктом arguments

+ +

Методи Array можуть використовуватись на залишкових параметрах, але не на об'єкті arguments:

+ +
function sortRestArgs(...theArgs) {
+  var sortedArgs = theArgs.sort();
+  return sortedArgs;
+}
+
+console.log(sortRestArgs(5, 3, 7, 1)); // виводить [1, 3, 5, 7]
+
+function sortArguments() {
+  var sortedArgs = arguments.sort();
+  return sortedArgs; // цього ніколи не станеться
+}
+
+// викидає TypeError: arguments.sort is not a function
+console.log(sortArguments(5, 3, 7, 1));
+
+ +

Щоб скористатись методами Array на об'єкті arguments, він спочатку має бути перетворений на справжній масив.

+ +
function sortArguments() {
+  var args = Array.from(arguments);
+  var sortedArgs = args.sort();
+  return sortedArgs;
+}
+console.log(sortArguments(5, 3, 7, 1)); // [1, 3, 5, 7]
+ +

Специфікації

+ + + + + + + + + + +
Специфікація
{{SpecName('ESDraft', '#sec-function-definitions', 'Function Definitions')}}
+ +

Сумісність з веб-переглядачами

+ +
+
+ + +

{{Compat("javascript.functions.rest_parameters")}}

+
+
+ +

Див. також

+ + -- cgit v1.2.3-54-g00ecf