Javascript 当cb异步运行时,为什么仍然定义此var?
这恰好是一个Chrome扩展,但我相信这是一个相关的一般问题。我有一个这样的工作func来访问本地存储:Javascript 当cb异步运行时,为什么仍然定义此var?,javascript,asynchronous,callback,namespaces,Javascript,Asynchronous,Callback,Namespaces,这恰好是一个Chrome扩展,但我相信这是一个相关的一般问题。我有一个这样的工作func来访问本地存储: function loadItem(sName, callback){ var get = {}; get[sName] = {}; //blank obj by default. chrome.storage.local.get(get, function(data) { data[sName] && callback(data[sN
function loadItem(sName, callback){
var get = {};
get[sName] = {}; //blank obj by default.
chrome.storage.local.get(get, function(data) {
data[sName] && callback(data[sName]);
});
};
在异步调用外部回调中调用loadItem的回调时,我使用loadItem的arg sName。为什么会有这样的定义?异步回调不应该识别该var吗?因为loadItem已完成运行,并且sName未作为回调自己的参数之一提供?这就是所谓的闭包。在本例中,您发送以获取的回调将捕获原始函数loadItem的本地范围内的变量,以便即使在原始函数完成执行后,它们仍然可以在回调中使用。有关更多信息,请参见我真的应该知道这一点,感谢您迅速澄清这一点;