Подтвердить что ты не робот

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).

4b9b3361

Ответ 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'.