声明中不包含变形对象

时间:2019-12-19 11:45:15

标签: javascript if-statement destructuring

我的代码如下所示 旨在观察打开时的模态内容

const data = {
   modal: false,
   button: null
};

const updateData = () => {
   const {modal, button} = data

   if (document.querySelector('.modal')) {
       modal = true
       button = document.querySelector('.modalButton')
   }
};

致电updateData()时出现以下错误:

  

未捕获的ReferenceError:未定义模式”

按如下所示编写时可以正常工作:

const updateData = () => {

    if (document.querySelector('.modal')) {
        data.modal = true
        data.button = document.querySelector('.modalButton')
    }
};

我不明白为什么在if语句中无法访问解构数据。

1 个答案:

答案 0 :(得分:0)

我还是不能100%地确定您要做什么,因为您是通过分解变量来设置模态和按钮的变量,然后又不使用这些变量...

您可以执行以下操作:

const data = {
   modal: false,
   button: null
};

const updateData = () => {
   const {modal, button} = data

   if (true) {
     return {
       modal, button
     }
   }
};

console.log(updateData());

如果您要这样做,则无法使用解构后的变量来更新解构后对象的属性。

如果要更新data.modal,则必须做data.modal = 'xx';