有人可以帮助解释为什么由setInterval()
刷新的对象的属性不能由独立函数访问,而仅当该函数也由setInterval()
调用时才可以访问吗?
以下示例:
function a() {
return {
debug: aVariable,
};
}
let obj;
function objUpdate() {
obj = a();
}
setInterval(objUpdate, 1000);
function b() {console.log(obj.debug);}
///returns value of aVariable:
setInterval(b, 1000);
//doesn't return value of aVariable:
b();
提前谢谢!
答案 0 :(得分:0)
为了使该代码在执行b()之前起作用;您必须执行objUpdate();因为在触发setInterval之前它不会设置obj值。
答案 1 :(得分:0)
您看到setInterval在第一次执行之前等待。
您正在setInterval(objUpdate, 1000)
上将obj的值延迟1秒
并且在执行b()时,您尝试在分配它之前对其进行访问。
您可以在设置时间间隔之前尝试手动调用objUpdate()
:
function a() {
return {
debug: aVariable,
};
}
let obj;
function objUpdate() {
obj = a();
}
objUpdate();
setInterval(objUpdate, 1000);
function b() {
console.log(obj.debug);
}
///returns value of aVariable:
setInterval(b, 1000);
///returns value of aVariable:
b()