gpt4 book ai didi

javascript - 全局变量在开关内不起作用 - javascript

转载 作者:行者123 更新时间:2023-12-03 01:03:10 25 4
gpt4 key购买 nike

 let visitor;
const role = req.user.profile;

// role will be either Admin or Manager

switch (role) {
case 'Admin':
if (req.body.verificationMode === 'online') {
visitor = {
name: req.body.name,
mode: 'online',
};
} else {
visitor = {
name: req.body.name,
mode: 'offline'
};
}
break;


case 'Manager':
Staff.findOne({
where: {
loginId: req.user.id,
},
}).then((staffData) => {
if (req.body.verificationMode === 'online') {
visitor = {
name: req.body.name,
mode: 'online',
};
} else {
visitor = {
name: req.body.name,
mode: 'offline',
};
}
});
break;

}
console.log('visitor >>> >> >> >> >>> >>>> >>>> >>>> >>> >>>> >>>', visitor);

如果我以管理员 Angular 色登录,访问者控制台具有正确的数据,但如果以经理 Angular 色登录,访问者控制台将变为未定义 .

为什么会发生这种情况?我使用的是 ES6,所以我不使用 var。

最佳答案

如果 Manager 在 console.log 之后执行,则您有异步代码。这就是为什么在这种情况下访问者是未定义的。

用这个。

 let visitor;
const role = req.user.profile;
let callback = function(){
console.log('visitor >>> >> >> >> >>> >>>> >>>> >>>> >>> >>>> >>>', visitor);
}
// role will be either Admin or Manager



switch (role) {
case 'Admin':
if (req.body.verificationMode === 'online') {
visitor = {
name: req.body.name,
mode: 'online',
};
} else {
visitor = {
name: req.body.name,
mode: 'offline'
};
}
callback();
break;


case 'Manager':
Staff.findOne({
where: {
loginId: req.user.id,
},
}).then((staffData) => {
if (req.body.verificationMode === 'online') {
visitor = {
name: req.body.name,
mode: 'online',
};
} else {
visitor = {
name: req.body.name,
mode: 'offline',
};
}
callback();
});
break;

}

console.log 移动到一个函数中,该函数在 visitor 值初始化后调用。

关于javascript - 全局变量在开关内不起作用 - javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52531581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com