作为闭包的回调中的Javascript变量作用域
Javascript variable scope in callbacks as closures
我有这个:
$(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控制台加载页面后出现问题I:
console.info(channelLatestMessages.length);
为2
。
但是我在代码中又得到了0
的channelLatestMessages.length
值。
这怎么可能??
因为在一种情况下,您在之后测试长度,导致回调运行的事件被触发,而在另一种情况下,您在此之前测试它
相关文章:
- 将函数的上下文应用于javascript变量
- 如何通过ajax刷新JSF填充的javascript变量
- Javascript变量赋值|
- 限制javascript变量的最小/最大整数
- 来自文本输入null的html javascript变量
- 访问jsrender模板中的全局javascript变量并更新它
- 从数据库中获取数据并插入JavaScript变量
- 如何将javascript变量传递到Meteor Spacebars模板中
- 将JavaScript变量保存到Rails模型
- 在if语句下的html中使用javascript变量
- Javascript变量分配-按类别
- 操作javascript变量[HTML]以只显示文本
- 无法比较javascript变量
- 如何将smarty变量与javascript变量进行比较
- 如何使用PHP将javascript变量添加到mysql数据库中
- Javascript 变量使用 jquery 查找变量
- 重新加载页面时Javascript变量发生变化
- 在asp classic中使用javascript变量
- 全局Javascript变量变为null
- 如何向服务器端提交javascript变量