我是nodejs的新手。我已阅读了很多文章,无法弄清楚以下代码有什么问题。它的给定错误checkForActivity未定义。任何帮助将不胜感激。
var net = require('net');
net.createServer(function(sock){
var checkForActivity = false;
sock.on('data',function(data){
changeCheckForActivity();
});
});
function changeCheckForActivity(){
checkForActivity = true;
}
答案 0 :(得分:4)
checkForActivity
仅在createServer()
的范围内定义。在changeCheckForActivity()
中,尚未定义createServer()
是否异步且无论如何都不可见。
var net = require('net');
var checkForActivity = false;
net.createServer(function(sock){
sock.on('data',function(data){
changeCheckForActivity();
});
});
function changeCheckForActivity(){
checkForActivity = true;
}
可能更好的解决方案是:
var net = require('net');
net.createServer(function(sock){
changeCheckForActivity(false);
sock.on('data',function(data){
changeCheckForActivity(true);
});
});
function changeCheckForActivity(isAct){
// do something in reaction to activity
// isAct is now a local replacement for
// checkForActivity
}
答案 1 :(得分:1)
checkForActivity
在函数中定义,因此它位于函数scope中。函数范围changeCheckForActivity()
checkForActivity
尚未定义。如果在函数外定义checkForActivity
,则两个函数都可以访问它:
var net = require('net');
var checkForActivity = false;
net.createServer(function(sock){
sock.on('data',function(data){
changeCheckForActivity();
});
});
function changeCheckForActivity(){
checkForActivity = true;
}