TypeError:无法匹配'undefined'或'null'

Pra*_*dra 45 javascript node.js ecmascript-6

client.createPet(pet, (err, {name, breed, age}) => {
  if (err) {
    return t.error(err, 'no error')
  }
  t.equal(pet, {name, breed, age}, 'should be equivalent')
})
Run Code Online (Sandbox Code Playgroud)

错误

client.createPet(pet, (err, {name, breed, age}) => {
                        ^

TypeError: Cannot match against 'undefined' or 'null'.
Run Code Online (Sandbox Code Playgroud)

为什么我收到此错误?我对ES6的了解促使我假设只有当数组或对象被解构或其子节点undefined或时才会出现此错误null.

我不知道函数参数被用作匹配项.如果它们是,那么为什么我试图解构其中一个只是一个错误?(不是undefinednull).

the*_*eye 69

只有当数组或对象被解构或其子节点是undefined或时,才会出现此错误null.

究竟.在您的情况下,被解构的对象是undefinednull.例如,

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'.
Run Code Online (Sandbox Code Playgroud)

  • 遗憾的是,刚刚发布的功能没有更多信息和有用的信息 (2认同)