JavaScript无法读取先前声明的变量的undefined属性

时间:2015-11-18 18:33:26

标签: javascript google-chrome-extension

我在匿名函数(第21列)和while循环(第15列)中得到TypeError: Cannot read property 'enabled' of undefined

var enabled = "unknown";
chrome.runtime.sendMessage({request: "Am I enabled?"}, 
    function(response)
    {
        enabled = response.enabled;
    });

while(enabled == "unknown")
{
    // wait
}

我通常不会写Javascript,所以我不确定我在这里做错了什么。搜索会给我var y = null; log(y.property);这样的结果,这根本不是这个问题。

1 个答案:

答案 0 :(得分:3)

错误来自这一行:

 enabled = response.enabled;

因为response未定义。

根据chomp

  

如果连接到扩展时发生错误,将调用不带参数的回调, runtime.lastError 将被设置为错误消息。

所以,修改你的代码:

var enabled = "unknown";
chrome.runtime.sendMessage({request: "Am I enabled?"}, 
function(response)
{
    if (!response) {
        // TODO: Check runtime.lastError and take an appropriate action
    } else {
        enabled = response.enabled;
        if (enabled) {
           // TODO: Do the stuff you were planning to do after the while() loop, call a function, etc.
        }
    } 
});