如何从callback函数访问外部variables?

我遇到以下代码片段的问题。 我无法从callback函数中访问userId ,无法返回whitelistedUserIds是否包含userId 。 根据debugging器,当我进入callback, userId是未定义的。

谁能解释为什么? 以及如何解决这个问题? 我已经closures了JavaScript很长一段时间…

 function userInWhitelist(userFileName) { var userId = userFileName.replace('.txt', ''); request({ url: whitelistURL }, function(err, resp, body, userId) { if (resp.statusCode == 200) { var users = JSON.parse(body).data; var whitelistedUserIds = _.map(users, (user) => { return user.id; }); // How to access userId ?? // How to return whitelistedUserIds.includes(userId) } }); 

callback的userId是阴影外面的一个。 只需从callback中删除userId

 function userInWhitelist(userFileName) { var userId = userFileName.replace('.txt', ''); request({ url: whitelistURL }, function(err, resp, body) { if (resp.statusCode == 200) { var users = JSON.parse(body).data; var whitelistedUserIds = _.map(users, (user) => { return user.id; }); // here you have access to userId } });