TypeError: не может совпадать с 'undefined' или 'null'
код
client.createPet(pet, (err, {name, breed, age}) => {
if (err) {
return t.error(err, 'no error')
}
t.equal(pet, {name, breed, age}, 'should be equivalent')
})
Ошибка
client.createPet(pet, (err, {name, breed, age}) => {
^
TypeError: Cannot match against 'undefined' or 'null'.
Почему я получаю эту ошибку? Мои знания ES6 привели меня к предположению, что эта ошибка возникает только в том случае, если массив или объект, подвергшийся разрушению, или его дочерние элементы undefined
или null
.
Я не знал, что параметры функции используются как совпадение. И если они тогда, то почему это только ошибка, если я пытаюсь разрушить одну из них? (это не undefined
или null
).
Ответы
Ответ 1
эта ошибка возникает только в том случае, если массив или объект, подвергаемый деструктурированию, или его дочерние элементы undefined
или null
.
Совершенно верно. В вашем случае объект, подвергшийся разрушению, равен либо undefined
, либо null
. Например,
function test(err, {a, b, c}) {
console.log(err, a, b, c);
}
test(1, {a: 2, b: 3, c: 4});
// 1 2 3 4
test(1, {});
// 1 undefined undefined undefined
test(1);
// TypeError: Cannot match against 'undefined' or 'null'.