将值传递到内部javascript函数

将值传递到内部javascript函数,javascript,Javascript,我有以下javascript代码,我无法将其传递到“内部函数” 我能够在“外部函数”控制台中检索u1和p1值,而无法在嵌套在“确认”中的函数中检索它 控制台将内部函数的u1和p1打印为未定义 代码段如下所示: function alertFunc(vara, varb) { console.log("Timeout!"); var u1 = vara; var p1 = varb; console.log("Outer Function: " + u1 + " ,

我有以下javascript代码,我无法将其传递到“内部函数”

我能够在“外部函数”控制台中检索u1和p1值,而无法在嵌套在“确认”中的函数中检索它

控制台将内部函数的u1和p1打印为未定义

代码段如下所示:

function alertFunc(vara, varb) {
    console.log("Timeout!");
    var u1 = vara;
    var p1 = varb;
    console.log("Outer Function: " + u1 + " , " + p1);

    confirm(u1, p1);

    function confirm(u1, p1) {
        var confirmPopup = $ionicPopup.confirm({
            title: 'Network Time-Out',
            template: 'Check your network connection and try again.',
            okText: 'Retry'
        });
        confirmPopup.then(function(res, u1, p1) {
            if (res) {
                $scope.loading = true;
                console.log("Inner Function: " + u1 + " , " + p1);
                loginz(u1, p1);
            } else {
                console.log('Cancelled');
            }
        });
    }
}
有什么问题,因为我确定我在中传入了变量。可能是在“确认弹出”期间,我没有传递值吗?如果有任何建议,我将不胜感激

有什么问题,因为我确定我在中传入了变量

这完全取决于
confirmPopup
函数使用什么作为其分辨率值,但很有可能没有,您还没有传递它们

您也不需要:只需将它们从
然后
回调函数参数列表中删除,就可以访问它们,因为回调是创建它的上下文上的闭包,它已经有了
u1
p1

例如:

有什么问题,因为我确定我在中传入了变量

这完全取决于
confirmPopup
函数使用什么作为其分辨率值,但很有可能没有,您还没有传递它们

您也不需要:只需将它们从
然后
回调函数参数列表中删除,就可以访问它们,因为回调是创建它的上下文上的闭包,它已经有了
u1
p1

例如:


好吧等一下,让我格式化它。谢谢@T.J.Crowder感谢您的编辑!mate尝试更改confirmPopup。然后(函数(res)与下面的答案类似,主要问题可能是承诺的回调不包括这些值作为参数。@Alex yeap成功了,谢谢mate!好的。请稍候。lemme格式化它。谢谢!@T.J.Crowder谢谢编辑!mate尝试更改confirmPopup。然后(函数(res)就像下面的答案一样,主要的问题可能是承诺的回调不包括这些值作为参数。@Alex yeap成功了,谢谢mate!
function alertFunc(vara, varb) {
    console.log("Timeout!");
    var u1 = vara;
    var p1 = varb;
    console.log("Outer Function: " + u1 + " , " + p1);

    confirm(u1, p1);

    function confirm(u1, p1) {
        var confirmPopup = $ionicPopup.confirm({
            title: 'Network Time-Out',
            template: 'Check your network connection and try again.',
            okText: 'Retry'
        });
        confirmPopup.then(function(res) {
            // removed from here -----^
            if (res) {
                $scope.loading = true;
                console.log("Inner Function: " + u1 + " , " + p1);
                loginz(u1, p1);
            } else {
                console.log('Cancelled');
            }
        });
    }
}