Деструктура массива с проблемой оператора OR, Uncaught TypeError: foo не является функцией - PullRequest
1 голос
/ 25 марта 2019

Верните true из функции foo и структурируйте ее с помощью оператора OR.

function foo() {
  return true;
}
var [a, b, c] = foo() || [];

Почему выдается ошибка, например, foo не является функцией.

Ответы [ 2 ]

2 голосов
/ 25 марта 2019

Фактическая ошибка на самом деле: TypeError: foo is not a function or its return value is not iterable.

Это связано с тем, что выполнение не достигнет оператора OR, поскольку результат foo() не равен false-y (это на самом деле true).Следовательно, javascript пытается деструктурировать true, что дает вам TypeError

1 голос
/ 25 марта 2019

Похоже на ошибку в отчете об ошибках V8:

function foo() {
  return true;
} 


var [a] = foo() ; // Uncaught TypeError: foo is not a function or its return value is not iterable
var [a] = foo() || []; // Uncaught TypeError: foo is not a function

Firefox правильно сообщает, что «не повторяется» в обоих случаях.

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