Javascript 如何从回调函数访问外部变量?
我在以下代码片段中遇到问题。我无法从回调函数中访问Javascript 如何从回调函数访问外部变量?,javascript,node.js,Javascript,Node.js,我在以下代码片段中遇到问题。我无法从回调函数中访问userId,也无法返回WhiteListedUserId是否包含userId。根据调试器,当我进入回调时,userId是未定义的 有人能解释一下原因吗?如何解决这个问题?我已经有一段时间不使用javascript了 function userInWhitelist(userFileName) { var userId = userFileName.replace('.txt', ''); request({ url: white
userId
,也无法返回WhiteListedUserId
是否包含userId
。根据调试器,当我进入回调时,userId
是未定义的
有人能解释一下原因吗?如何解决这个问题?我已经有一段时间不使用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)
}
});
回调的
userId
正在覆盖外部的用户id。
只需从回调中删除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
}
});
您可能希望提到回调的
userId
正在跟踪外部回调。仅仅说“删除”并不能告诉任何人真正发生了什么。@JosephDeeamer我的英语很差,对我来说,解释起来比仅仅显示正确的代码更难这叫“隐藏”。给一个或另一个起不同的名字。