[英]global variable in socket.io node.js javascript not working
真正的基本JavaScript问题:
javascript和node.js中的全局变量,我在做什么错? 我看过其他帖子,答案是在函数末尾返回值。 我尝试了此操作,但仍然无法将值更改为“ 5”,并且在整个套接字连接中都保持这种状态。 任何帮助将不胜感激!
难道是在匿名函数中更改了变量的事实?
var x;
io.sockets.on('connection', function(socket){
x = 0;
console.log("x at first is: " + x);
socket.on('key', function(value){//value = 5
x = value;
console.log("x is now + " + value);
return x;
})
console.log("outside, x is " + x);
socket.on('page', function(){
console.log("x is unfortunately still: " + x);
})
})
我的控制台日志如下所示:
x首先是0
x现在是5
在外面,x是0
x仍然很遗憾:0
这是因为在console.log(“ outside,x is” + x)中,由于函数作用域,实际上没有设置x is。 尝试:
console.log("outside, x is " + socket);
由于x在您的套接字函数中返回。
使用以下语句创建新的函数范围变量x:var x = value; 在函数中它将覆盖您的全局变量。 删除您的“ var”,仅设置x = value即可访问全局变量。
在为x
分配新值时,已使用var
关键字,这使x
在声明其的匿名函数中是局部的。它与在该函数外部的x
。 删除该var
关键字,您将获得:
x首先是0
x现在是5
在外面,x是0 // //应该在这里期望
0
,因为在套接字收到消息之前输出了这个x仍然很不幸:5 //是! 它已更新(假设在“关键”消息之后收到“页面”消息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.