回调中的未定义变量

时间:2016-03-09 12:04:24

标签: javascript cordova-plugins

我对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

有意义吗?是否存在变量(函数参数)在闭包中停止运行的情况?

1 个答案:

答案 0 :(得分:1)

  

是否存在变量(函数参数)在闭包中停止运行的情况?

是的,如果您通过分配另一个值(例如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