我对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
有意义吗?是否存在变量(函数参数)在闭包中停止运行的情况?
答案 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