以下nodejs代码

时间:2016-06-07 07:42:16

标签: javascript node.js closures

第一个代码

net.createServer(function(socket){
    socket.on('data',function(id){
        getUserDetails(function(){console.log(id)});
    });
});

function getUserDetails(next){ 
    next();
}

第二代码

net.createServer(function(socket){
    socket.on('data',function(id){
        getUserDetails(function(){console.log(id)});
    });
});

function getUserDetails(next){
    console.log(id); 
    next();
}

第一个代码记录id,其中第二个代码给出错误。我知道getUserDetails无法访问id,但是传递给getUserDetails的回调如何才能访问id?

1 个答案:

答案 0 :(得分:1)

id是一个作用于socket.on('data')事件回调函数的变量。

getUserDetails方法不在该范围内 - 因此无法访问此变量。

您作为getUserDetails参数发送的函数在id变量所在的回调函数范围内声明,因此可以访问它。