gpt4 book ai didi

javascript:函数在分配给变量时返回未定义的值

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

我正在尝试使用 this stackOverflow article 将函数的返回值分配给变量作为模板。这是我的代码:

var host = getHostName(djId, function(name) {
return name;
});
console.log(host); // undefined :(


function getHostName(id, cb) {
var reply;
userColl.findById(id, function (err, dj) {
if (err) {
reply = "db error";
} else {
reply = dj.firstName + ' ' + dj.lastName;
}
console.log(reply + ' reply'); // working as expected!
cb(reply);
});
}

console.log(reply) 正在按预期工作,但是 host当我尝试调用该函数时仍然未定义。什么给出?

最佳答案

因为它是 getHostName 的结果,它本身不返回任何内容。它看起来像一个异步函数,因此如果您需要对值执行某些操作,则必须将其放在回调内部。

内部函数(回调)是异步执行的,因此当它运行时,getHostName 的执行已经完成。这就是内部函数无法向变量返回任何内容的原因。所有使用名称执行某些操作的代码都必须位于回调内部。

var host = getHostName(djId, function(name) {
console.log(name); // Here you go
anotherFn(name); // Here you can have the rest of your code which needs the name
});

关于javascript:函数在分配给变量时返回未定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24961988/

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