let { msg, code, user } = data;什么意思?

今天看到这样一段代码:

requestLogin(loginParams).then(data => {
  this.logining = false;
  //NProgress.done();
  let { msg, code, user } = data;
  if (code !== 200) {
    this.$message({
      message: msg,
      type: 'error'
    });
  } else {
    sessionStorage.setItem('user', JSON.stringify(user));
    this.$router.push({ path: '/table' });
  }
});

有了解过ES6的语法,但是不知道`let { msg, code, user } = data;
`这一句是什么意思。自己网上找了挺久找不到答案。一般定义一个变量不是直接var(orlet)=xxx吗,那个中括号什么意思呢?

阅读 11.3k
6 个回答

叫解构赋值

let jsonData = {
  id: 42,
  status: "OK",
  data: [867, 5309]
};

let { id, status, data: number } = jsonData;

console.log(id, status, number);
// 42, "OK", [867, 5309]

ES6 推荐一下 阮一峰的

写成es5如下:

//let { msg, code, user } = data;
let msg = data.msg,
    code = data.code,
    user = data.user;

es6新语法糖,在某些场景下会方便许多

ES6 语法
意思为从对象data中取出这几个键值作为变量来使用, 很简单
详见 MDN

es6中的对象的结构赋值

es6的新语法,百度es6 变量的解构赋值,有很多相关介绍,这里就不赘述了。参考变量的解构赋值

解构还是叫解耦来着,忘了,就是这么一回事。把那几个属性付给一个对象变量。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏