Javascript对象存在,但调用键时返回未定义的
我不是在问问题,因为我终于解决了它,但我会发表它,因为我花了3个多小时试图弄明白它 形势 我正在开发一个Chrome扩展,希望允许用户通过“options.html”页面更改Chrome设置 扩展将当前配置作为对象加载Javascript对象存在,但调用键时返回未定义的,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我不是在问问题,因为我终于解决了它,但我会发表它,因为我花了3个多小时试图弄明白它 形势 我正在开发一个Chrome扩展,希望允许用户通过“options.html”页面更改Chrome设置 扩展将当前配置作为对象加载options.js: 让myConfiguration=newobject() myConfiguration=getCurrentConfig() 如果在我的options.js中调用变量myConfiguration,我会得到一个空对象: console.log(myCon
options.js
:
让myConfiguration=newobject()
myConfiguration=getCurrentConfig()
如果在我的options.js
中调用变量myConfiguration
,我会得到一个空对象:
console.log(myConfiguration)
//输出:{}
如果我从devtools调用变量,我会得到以下对象:
console.log(myConfiguration)
//输出:{key1:value1,key2:value2,…}
这让我发疯。请参阅下面的答案。解决方案 问题是,当我从
options.js
文件调用变量时,它仍然没有被赋值。但是当我检查devtools上的控制台时,我的变量有一个赋值
解决方案是调用从新的“js”文件中为变量赋值的函数,并将该文件放在options.html
页面的de body标记之前
我希望这能帮助人们避免花3个小时玩弄javascript代码。解决方案 问题是,当我从
options.js
文件调用变量时,它仍然没有被赋值。但是当我检查devtools上的控制台时,我的变量有一个赋值
解决方案是调用从新的“js”文件中为变量赋值的函数,并将该文件放在options.html
页面的de body标记之前
我希望这能帮助人们避免花3个小时玩弄javascript代码。控制台是异步的。这是一个令人困惑的概念。但本质上,当您控制台记录一个对象时,您的日志记录就是一个引用。当您的浏览器开始显示日志时,它会在该点评估对象的内容,这至少是一个完整的事件循环。提示如何构造这个问题。删除解决方案部分,并将其放在答案中。您可以回答自己的问题。欢迎来到StackOverflow亲爱的@Vitrvm,请提问并删除解决方案部分。谢谢您的帮助。将在今天下午修复问题/答案。控制台是异步的。这是一个令人困惑的概念。但本质上,当您控制台记录一个对象时,您的日志记录就是一个引用。当您的浏览器开始显示日志时,它会在该点评估对象的内容,这至少是一个完整的事件循环。提示如何构造这个问题。删除解决方案部分,并将其放在答案中。您可以回答自己的问题。欢迎来到StackOverflow亲爱的@Vitrvm,请提问并删除解决方案部分。谢谢您的帮助。我将在今天下午解决这个问题/答案。