在我的Google Chrome扩展程序的background.js
中,我有:
function getCurrentSurveyID() {
chrome.storage.local.get(
"currentSurveyID", function (value) {
if (typeof value === "undefined") {var surveyID = 0;} else {var surveyID = value;}
console.log("value of currentSurveyID read as " + surveyID);
return {id: surveyID};
}
);
}
为什么我会:
value of currentSurveyID read as [object Object]
Uncaught ReferenceError: surveyID is not defined
at <anonymous>:2:1
at Object.InjectedScript._evaluateOn (<anonymous>:905:140)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:838:34)
at Object.InjectedScript.evaluate (<anonymous>:694:21)
非常感谢。
====
更新
我刚刚发现了在chrome.storage.local.get
中设置默认值的功能。该功能现在为:
function getCurrentSurveyID() {
chrome.storage.local.get(
{currentSurveyID: 0}, function (surveyID) {
console.log("value of currentSurveyID read as " + surveyID);
return {id: surveyID};
}
);
}
然而,行为没有改变。
我现在使用HTML5的本地存储而不是Chrome的工作:
function getCurrentSurveyID() {
value = localStorage["currentSurveyID"] || 0;
return {id: value};
}
但是,我仍然很想知道我在Chrome本地存储中犯了什么错误。
答案 0 :(得分:0)
localStorage是一个非常不同的同步api,你使用的是不同的逻辑。从中可以看出,第一种情况下的错误是控制台中显示的错误:您的变量未定义,因为您从未为其分配任何内容。为其赋值的代码位于if不会执行的内部。你也正在错误地阅读返回值,请查看文档。它不返回单个值,而是返回一个对象。