2016-06-07 5 views
1

первый код

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(); 
} 

Первый код регистрирует идентификатор, где в качестве второй код дает ошибку. Я понимаю, что getUserDetails не имеет доступа к id, но как получить обратный вызов getUserDetails, имеющий доступ к id?разница между следующими кодами nodejs

+0

'id' не входит во второй код. Только в пределах области обратного вызова «socket.on» – elclanrs

+0

Переменные, к которым имеет доступ функция, основаны на том, где функция * определена *, а не там, где она * называется *. – nnnnnn

ответ

1

id - переменная, облагаемая функцией обратного вызова socket.on('data').

Метод getUserDetails не входит в эту область - поэтому он не может получить доступ к этой переменной.

Функция, отправленная как параметр в getUserDetails, объявляется внутри области функции обратного вызова, в которой находится переменная id, поэтому она может получить к ней доступ.

Смежные вопросы