该功能仅适用于setInterval

时间:2018-10-03 09:53:15

标签: javascript setinterval

有人可以帮助解释为什么由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();

提前谢谢!

2 个答案:

答案 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()