繁体   English   中英

回调中的未定义变量

[英]Undefined variable in callback

我对Cordova插件的回调有问题,可以通过以下代码进行说明:

function foo(param) {
    setTimeout(function(){ 
        console.log("In:", param);
    }, 1000);

    console.log("Out:", param);
}

foo(1);

在此示例中,我通过简单的超时来假装插入回调调用。

预期结果是:

Out: 1
In: 1

但是我面临的问题是,在具有真实插件回调(而不是超时)的真实应用程序中,有时回调函数中的函数参数值是undefined ,就像在上一个示例中那样:

Out: 1
In: undefined

是否有意义? 在闭包中是否有变量(函数参数)不再可用?

在闭包中是否有变量(函数参数)不再可用?

是的,如果您通过分配给另一个值(例如, undefined )来更改闭包范围中的参数,请参见示例:

function foo(param) {

    setTimeout(function() {
        console.log("In:", param);
    }, 1000);

    // some function that returns 'undefined'
    var someFunction = function() {
        return undefined;
    };

    console.log("Out:", param);

    param = someFunction(); // or simply assign to 'undefined'
}

foo(1);

输出:

Out: 1
In: undefined

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM