全局变量在函数内定义,也在函数javascript中到期

时间:2014-08-18 23:54:26

标签: javascript google-chrome-extension

我正在创建一个chrome扩展程序,令我惊讶的是我的内容脚本非常奇怪。我已经定义了一个全局变量关键字,但是当它通过赋予它值的函数时,该值在函数结束时到期。我花了几个小时进行故障排除,似乎无法找到问题。

var keyword;

chrome.extension.sendMessage({localStorage: "yo"}, function(response) {
        var localStorage = response.localStorage;
        keyword = localStorage["keyword"];
        console.log(keyword);
});
console.log(keyword);

函数中的日志返回我想要的值,但函数返回undefined之后的日志,即使据我所知,它也应该返回函数中给出的值。我没有在函数中声明它,为什么它的值在函数后到期?

1 个答案:

答案 0 :(得分:0)

"关键字"的值在你的例子中似乎分配了某种回调函数。因此,如果运行代码,则不会立即执行回调函数,因此不会为"关键字"分配任何值。它将在稍后执行,当您的chrome扩展程序触发回调函数时,您将传递给" sendMessage"。

但是你的console.log将立即执行,"关键字"就像它被初始化 - 未定义。