Получение undefined не является функцией при разрушении массива - PullRequest
0 голосов
/ 10 ноября 2018

function foo([a,b,c]) {
  console.log(a,b,c);
}

foo(1,2,3);

Почему вышеприведенный код не определен не является функцией?

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Поскольку движок js не соответствует ни одному итерируемому объекту из параметров.

Посмотрите на этот пример

function foo([a, b, c]) {
  console.log(a, b, c);
}

// This time, we are passing an array which is iterable
foo([1, 2, 3]);

Альтернативой является использование синтаксиса Spread, а затем функции apply для передачи всего набора параметров в виде отдельных параметров в функцию console.log.

function foo(...params) {
  console.log.apply(undefined, params);
}

foo(1, 2, 3);
0 голосов
/ 10 ноября 2018

Вы можете распространять аргументы и назначать переменные внутри функции

const foo = (...args) => {
  const [a,b,c] = args
  console.log(a,b,c);
}

foo(1,2,3);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...