首页 > 解决方案 > 赋值给常量变量异常

问题描述

我收到以下异常:当前值为 [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());
})   

标签: javascriptexceptiongoogle-chrome-extensionautomation

解决方案


使用let而不是const.

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


推荐阅读