回调中的Javascript变量作用域作为闭包
我有这个:回调中的Javascript变量作用域作为闭包,javascript,variables,scope,anonymous-function,Javascript,Variables,Scope,Anonymous Function,我有这个: $(document).ready(function(){ pubnub.subscribe ({ connect: function(m){ var channelLatestMessages = []; pubnub.history({ channel: broadcastChannel, count: 1, callback: function (m) {
$(document).ready(function(){
pubnub.subscribe ({
connect: function(m){
var channelLatestMessages = [];
pubnub.history({
channel: broadcastChannel,
count: 1,
callback: function (m) {
if(m[0].length > 0)
{
$.each(m[0], function(index, value){
channelLatestMessages.push(value);
});
}
//THE NUMBER OF MESSAGE OBJECTS RETURNED IS 2
//HERE THE OUTPUT IS 2
console.info(channelLatestMessages.length);
},
});
//THE NUMBER OF MESSAGE OBJECTS RETURNED IS 2
//HERE THE OUTPUT IS 0
console.info(channelLatestMessages);
}
});
}))
如果我声明:
channelLatestMessages = [];
在Firebug控制台中没有var
关键字和页面加载问题I之后:
console.info(channelLatestMessages.length);
号码是2
但是我在代码中再次获得channelLatestMessages.length
值0
这怎么可能呢?因为在一种情况下,您在触发导致回调运行的事件之后测试长度,而在另一种情况下,您在触发事件之前测试长度。可能重复的