在 if 语句中无法访问解构对象

destructured object not accesible in of statement

我的代码是这样的 它的目的是在打开时观察模态内容

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

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

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

调用 updateData() 时出现以下错误:

Uncaught ReferenceError: modal is not defined"

当它像这样写时,它会按预期工作:

const updateData = () => {

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

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

我仍然不能 100% 确定您要做什么,因为您通过解构变量来设置变量 modal 和 button,然后您不使用这些变量...

你可以这样做:

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';