gpt4 book ai didi

回调中的 Javascript 变量范围作为闭包

转载 作者:行者123 更新时间:2023-12-03 11:58:56 25 4
gpt4 key购买 nike

我有这个:

$(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 = [];

没有 var Firebug 控制台中的关键字和页面加载后问题:

console.info(channelLatestMessages.length);

号码是2

但是我得到channelLatestMessages.length 0 的值再次在代码中。

这怎么可能???

最佳答案

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

关于回调中的 Javascript 变量范围作为闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25489060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com