Javascript 如何访问JS then块中父函数的变量
我需要从外部函数中声明的then块内部访问变量,但由于某些原因,其中一些变量显示为未定义。是否有特定的名称可以在某个范围内访问Javascript 如何访问JS then块中父函数的变量,javascript,Javascript,我需要从外部函数中声明的then块内部访问变量,但由于某些原因,其中一些变量显示为未定义。是否有特定的名称可以在某个范围内访问 function foo(tableIDs, tableID, fieldID) { var tables = new Array(); var bar = new Array(); var zim = new Array(); var gir = new Object(); zim.push(fieldID); gir
function foo(tableIDs, tableID, fieldID)
{
var tables = new Array();
var bar = new Array();
var zim = new Array();
var gir = new Object();
zim.push(fieldID);
gir.id = fieldID;
otherFunction(tableID).then(function(response)
{
tables.push(response); // works fine
bar.push(response); // bar is undefined
zim.push(response); // zim is undefined
gir.response = response; //gir is undefined
});
}
此外,虽然tableIDs可以在then语句中访问,但tableID和fieldID都不能访问。目前,我正在通过将fieldID推到表中并在处理响应之前以这种方式访问它来“解决”这个问题,但这似乎是一个我想要避免的非常丑陋的解决方案。由于tables和bar之间的唯一区别是变量的名称,所以上面示例中使用的所有名称都与我在处理此问题时使用的名称完全相同。您的代码工作得非常好。出于测试目的,我已经完成了您的实现,并且运行良好。 检查它:
function-otherFunction(tableID){
返回新承诺(功能(解决、拒绝){
解析(表ID)
})
}
函数foo(tableID、tableID、fieldID){
var tables=新数组();
var bar=新数组();
var zim=新数组();
var gir=新对象();
zim.push(字段ID);
gir.id=字段id;
otherFunction(tableID)。然后(function(response){
表。推送(响应);
推力(响应);
推送(响应);
gir.response=响应;
console.log('响应:',响应)
log('tables:',tables)
console.log('bar:',bar)
console.log('zim:',zim)
console.log('gir:',gir)
log('tableID:',tableID)
console.log('tableID:',tableID)
console.log('fieldID:',fieldID)
});
}
foo('test-tableID'、'test-tableID'、'test-fieldID')
请发布错误消息/堆栈跟踪。如果将所有var
更改为const
,会发生什么情况?不可能确切知道您编写的代码发生了什么情况。对我来说,可能重复正常工作: