gpt4 book ai didi

Javascript 范围 - 无法访问范围之外的值

转载 作者:太空宇宙 更新时间:2023-11-04 03:29:18 24 4
gpt4 key购买 nike

我想访问从 this.dorequest() 返回后恰好是一个全局变量的“key”。我在 if block 内获得了 key ,但无法在外部任何地方访问它。有人可以帮忙吗?很确定这是范围/提升问题。提前致谢!

var key; 
jira.addNewIssue = function(issue) {
var options = {
uri: this.makeUri('/issue'),
method: 'POST',
followAllRedirects: true,
json: true,
body: issue
};

this.doRequest(options, function(error, response, body) {
**var key;** (removed this but still an error)
if (error) {
console.log('Error1')
return;
}
else {
key = response.body.key;
console.log("THIS IS RESPONSE BODY KEY:", key); //no errors 123
return key;
}
});
};

console.log("hello key", key); //undefined

最佳答案

您正在使用

var key;

在 block 内,这意味着您在 block 作用域中重新定义它,这使其成为该作用域内的不同变量。只需删除 var 语句即可。

此外,您在异步调用中分配关键变量,该调用在您到达 console.log 语句之前可能尚未完成。将 console.log 语句移至回调函数中或创建一个事件以在回调完成时触发 console.log 语句。

在异步回调中使用全局变量可能不是一个好主意。我不确定你的 return 语句是否做了任何事情(取决于你正在使用的库的 API),但它肯定不会分配关键变量。

关于Javascript 范围 - 无法访问范围之外的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40364207/

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