Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何访问JS then块中父函数的变量_Javascript - Fatal编程技术网

Javascript 如何访问JS 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

我需要从外部函数中声明的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.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
,会发生什么情况?不可能确切知道您编写的代码发生了什么情况。对我来说,可能重复正常工作: