【问题标题】:Assignment to constant variable exception赋值给常量变量异常
【发布时间】:2020-06-26 13:01:42
【问题描述】:

我收到以下异常:当前值为 [object Object] popup.html:1 错误处理响应:TypeError:赋值给常量变量。 在 chrome-extension://....../popup.js:19:18 尝试从我的 Chrome 扩展程序中获取输入并在此处使用它...

const settings =    {
                        name: "",
                        email: "",
                        tel: "",
                        cc_number: "",
                        cc_exp: "",
                        cc_csc: "",
                        address_line1: "",
                        address_level2: "",
                        address_level1: "",
                        postal_code: ""
                    }


function getSettingsfromStorage() {
    chrome.storage.local.get(['settings'], function(result) {
        console.log('im getter');
        console.log('Value currently is ' + result); //Exception
        settings = result; //Exception
    });
}

function saveSettingstoStorage() {
    chrome.storage.local.set({'settings': settings}, function() {
        console.log('Value is set to ' + settings);
    });
}

function getSettingsfromPopup() {
    for(let setting in settings) {
        console.log(setting);
        settings.setting = document.getElementById(setting).value;
        console.log(setting);
    }
}

function saveSettingstoPopup() {
    for(let setting in settings) {
        console.log(setting);
        if(document.getElementById(setting)) {
            document.getElementById(setting).value = settings.setting;
        }
        console.log(setting);
    } 
}

async function getFromPopUpAndSaveToStorage() {
    await getSettingsfromPopup();
    saveSettingstoStorage();
}

async function getFromStorageAndSaveToSettings() {
    await getSettingsfromStorage();
    saveSettingstoPopup();
}

document.addEventListener('DOMContentLoaded', () => {
    //settings.fullName = document.getElementById(name).value;
    getFromStorageAndSaveToSettings();
    document.getElementById("saveButton").addEventListener("click", getFromPopUpAndSaveToStorage());
})   

【问题讨论】:

  • 当一个变量被声明为const时,以后不能重新赋值(设置为const,所以当你做settings = result时会报错)
  • 常量的值不能通过重新赋值来改变,也不能重新声明。

标签: javascript exception google-chrome-extension automation


【解决方案1】:

使用let 代替const

您不能重新分配声明为const 的变量。如果它是一个对象,您可以更改其属性。如果它是一个数组,你可以改变它的值,但你仍然不能重新分配它。

【讨论】:

    猜你喜欢
    • 2020-07-31
    • 2020-01-27
    • 2021-04-07
    • 2020-12-02
    • 2021-12-04
    • 1970-01-01
    • 2023-03-15
    • 2011-10-06
    • 2012-10-30
    相关资源
    最近更新 更多