var net = require('net');
var redis = require('redis');
var redisClient = redis.createClient("redis://localhost:6379");
redisClient.on("connect",function(){
console.log("Connected to Redis");
});
net.createServer(function(socket){
console.log('CONNECTED: ' + socket.remoteAddress +':'+ socket.remotePort);
var id = '';
socket.on('data',function(data){
console.log(id);
if(id == '')
test();
else
//do something else
});
}).listen(10000,'');
function test(){
redisClient.hgetall('12345',function(err,res){
id = res.id;
});
}
在这段代码中,为什么当我调用函数测试时变量 id 不是闭包?它给出的错误 ID 在测试函数中未定义。我对闭包的理解是否错误?
最佳答案
函数test
——以及所有其他函数——只能看到全局变量、函数本身内定义的变量以及函数定义的封闭范围内定义的变量定义.
您在调用函数的作用域中看不到变量。如果您想让函数可以访问这些变量,则必须将它们作为参数传递。
关于javascript - 闭包中的变量但无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35894611/