【问题标题】:Strange notation in Vue: const { state = {} } = this.$store;Vue 中的奇怪符号: const { state = {} } = this.$store;
【发布时间】:2019-10-02 16:32:41
【问题描述】:

我正在关注一个已经创建的项目,我在一个使用 Vuex 的 Vue 项目中遇到了这个符号:

const { state = {} } = this.$store;
const { orders = {} } = state;

它似乎定义了一个名为 state 的本地对象,该对象设置为等于 Vuex 存储的值......然后将其设置为另一个名为“orders”的对象,但我对符号本身有点迷茫.即这表明了什么:

{ variable = {} } = anotherObj

还有这个符号如果存在的话叫什么。 (这样我就可以谷歌它并弄清楚它如何处理深度克隆等,因为它似乎是一种克隆对象的方法。)......或者它可能是 vuex 特有的东西?

【问题讨论】:

标签: javascript vue.js vuex notation


【解决方案1】:

这个:

const { state = {} } = this.$store;
如果源 (this.$store) 不具有属性 state 或具有属性但具有值 undefined,则

destructuring assignment 并具有 默认值。结果将是 state 将具有 this.$store.state 的值,如果该属性存在并且不具有值 undefined,或者如果该属性不存在或具有值 @ 将有一个新的空白对象987654330@.

示例(使用字符串而不是对象,但它是相同的主体):

const obj1 = {};
const { a = "default" } = obj1;
console.log(a);        // "default"

const obj2 = {
    b: "value from obj2"
};
const { b = "default" } = obj2;
console.log(b);        // "value from obj2"

【讨论】:

  • holy smokes 是一个有用的符号!非常感谢!
  • @WilliamTerrill - 是的,这很酷。像任何东西一样,你可以用它走得太远,但它非常酷。 :-)
  • @WilliamTerrill - 只是 FWIW,我将在 3-4 个月内出版一本关于这些东西的书:JavaScript: The New Toys
  • 哇...谢谢!我也查看了你的博客。那里有一些很好的信息!
猜你喜欢
  • 1970-01-01
  • 2022-01-24
  • 2020-11-25
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
相关资源
最近更新 更多