[英]Access variable in function within function outside of function?
我有以下代码将我的iOS设备注册到我的APNS服务器:
pushNotification.registerDevice({
alert: true,
badge: true,
sound: true,
pw_appid: "***",
appname: "***"
},
function (status) {
var deviceToken = status['deviceToken'];
},
function (status) {
console.warn('failed to register : ' + JSON.stringify(status));
navigator.notification.alert(JSON.stringify(['failed to register ', status]));
});
这在onLoad
运行,但是我需要在pushNotification.registerDevice() function (status)
的范围之外访问deviceToken
。
在这种情况下,是否可以访问在函数内部,函数外部,函数内部的deviceToken
?
我以为可以通过使用window.deviceToken
使其成为全局变量,然后稍后调用它,但是它返回未定义的值。
您可以给deviceToken
更大的范围:
var deviceToken;
pushNotification.registerDevice({
alert: true,
badge: true,
sound: true,
pw_appid: "***",
appname: "***"
},
function(status) {
deviceToken = status['deviceToken'];
},
function(status) {
console.warn('failed to register : ' + JSON.stringify(status));
navigator.notification.alert(JSON.stringify(['failed to register ', status]));
});
对其进行更改以使deviceToken
成为全局变量,以便通过直接引用全局范围在外部范围中可用。
function (status) {
window.deviceToken = status['deviceToken'];
},
如果只希望在父作用域中使用它,而不必在全局作用域中使用它,则可以在所需的父作用域中定义它,然后不在函数中重新声明它:
var deviceToken;
pushNotification.registerDevice({
alert: true,
badge: true,
sound: true,
pw_appid: "***",
appname: "***"
},
function (status) {
deviceToken = status['deviceToken'];
},
function (status) {
console.warn('failed to register : ' + JSON.stringify(status));
navigator.notification.alert(JSON.stringify(['failed to register ', status]));
});
如果要将令牌分配给全局并在尝试使用它时发现其未定义,则可能会找到它,因为registerDevice ajax尚未收到响应。
尝试将回调分为一个单独的函数,然后从那里启动所有依赖函数。
function registerSuccess(status) {
// Store token globally
token = status["deviceToken"];
// or pass as an argument
// call functions that depend on the token
Foo(token);
Bar(); // uses global
}
我个人将尝试作为参数传递,以免污染全局名称空间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.