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

全局变量在函数中定义,也在函数javascript中过期,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在创建一个chrome扩展,令我惊讶的是,我的内容脚本表现得非常奇怪。我已经定义了一个全局变量关键字,但是当它通过给它赋值的函数时,该值在函数结束时过期。我花了几个小时排除故障,似乎找不到问题 var keyword; chrome.extension.sendMessage({localStorage: "yo"}, function(response) { var localStorage = response.localStorage; keyword

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

var keyword;

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

函数中的日志返回我想要的值,但函数后的日志返回未定义的值,尽管据我所知,它还应该返回函数中给它的值。我没有在函数中声明它,那么为什么它的值在函数之后过期呢?

关键字的值在某种回调函数中赋值,就像在您的示例中一样。因此,如果您运行代码,回调函数将不会立即执行,因此不会为关键字分配任何值。它将在稍后执行,当您的chrome扩展启动回调函数时,您将传递给sendMessage


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

它不会过期,您的console.log代码在回调函数被调用之前执行,这是一种异步方法。我想这可能是时间问题。谢谢你的确认。