#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:
Нет.
Если последний именованный аргумент функции имеет префикс 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 = [];