Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
回调中的Javascript变量作用域作为闭包_Javascript_Variables_Scope_Anonymous Function - Fatal编程技术网

回调中的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


这怎么可能呢?

因为在一种情况下,您在触发导致回调运行的事件之后测试长度,而在另一种情况下,您在触发事件之前测试长度。

可能重复的