文章目录

解构对象

相关知识:
​​​解构对象 (mozilla.org)​

调试

给新的变量命名并提供默认值

一个属性可以同时 1)从一个对象解构,并分配给一个不同名称的变量 2)分配一个默认值,以防未解构的值是 undefined


为了方便调试,您可以将默认值设定为具有特别含义的字符串或者数值,可以帮助你定位到问题发生的地方,也有助于程序运行下去!

这里,​​aa​​​作为被解构对象的属性名​​a​​的一个别名,语法如下

var {a:aa = 10, b:bb = 5} = {a: 3};

console.log(aa); // 3
console.log(bb); // 5

解构对象需要小心的

  • 某些对象比较简单,解构出来的属性是一个基础变量而不是像指针(对象的引用)那么这时候对这个解构出来的变量赋值需要注意它可能就不会影响到被解构对象,从而导致赋值失败!
  • 当然,有时候,我们仅需要读取被解构对象的某个属性值,就没有这种顾虑,但是前面一种情况可能还是占大多数,所以要小心使用

代码示例

egg.js 后端的一段解构代码

// this.ctx.body = "hellp jwt";
const { ctx, app } = this;
console.log(app, `@app`);
console.log(ctx, `@ctx`);
/* 结构语法的不当使用(一种常见的错用形式就是,和成员访问运算符混合使用,导致被解构对象出现偏差)
例如,已知,app对象中存在有一个属性jwt,现在你需要将他复制给一个变量以便后续的多次引用.*/
// const { jwt } = app.jwt;
// const{jwt}=app;
//为解构变量赋值以默认值(有明确特定意义的字符串)
const { jwt: appJwt = `deconstruct app.jwt` } = app;
const { jwt: confJwt = `deconstruct app.config.jwt` } = app.config;
// console.log(app.jwt, `@app.jwt`);
console.log(appJwt, `@appConfig`);
console.log(confJwt, `@confJwt`);
const user = {
username: "cxxu"
};
const token = appJwt.sign(user, confJwt.secret);