возможно ли иметь больше, чем параметр rest в качестве аргументов функции в ES6?

#javascript #ecmascript-6

#javascript #ecmascript-6

Вопрос:

Можем ли мы иметь два или более параметров rest в аргументах функции, используя ES6? Кто-нибудь, пожалуйста, объясните это?

 function f(a, b, ...args1, c, ...arg2) {
    //do somthing
}
  

возможно ли это с es6?

Комментарии:

1. Нет, не совсем. Подумайте об этом, легко взять первый параметр и назначить его a , второй и назначить его b , но скольким вы назначаете args1 ? Обратите внимание, что допустимо любое количество.

2. хорошо. не могли бы вы, пожалуйста, помочь мне указать длину аргументов для args1?

3. нет; это «rest», как и в «the rest»

Ответ №1:

Нет.

Из параметров rest в MDN:

Если последний именованный аргумент функции имеет префикс with ... , он становится массивом, элементы которого от 0 (включительно) до theArgs.length (эксклюзивно) предоставляются фактическими аргументами, переданными функции.

(выделение мое)

Если это «последний», он, очевидно, может быть только один.

Комментарии:

1. Вы хотите сказать, что последним агрументом может быть rest (…) . или мы можем использовать средний как rest (…) ?

2. @user2063756 Только последним может быть rest.

3. Синтаксис REST собирает несколько элементов и «конденсирует» их в один элемент.

Ответ №2:

Нет, потому что результат не будет четко определен.

Например, если вы вызвали

 f(1,2,3,4,5);
  

тогда были бы разные разумные возможности:

 a = 1;
b = 2;
args1 = [];
c = 3;
args2 = [4,5];
  
 a = 1;
b = 2;
args1 = [3];
c = 4;
args2 = [5];
  
 a = 1;
b = 2;
args1 = [3,4];
c = 5;
args2 = [];
  
 a = 1;
b = 2;
args1 = [3,4,5];
c = undefined;
args2 = [];