gpt4 book ai didi

javascript - 设置间隔后变量未定义

转载 作者:行者123 更新时间:2023-11-30 12:30:41 25 4
gpt4 key购买 nike

我想知道为什么我的变量(最初设置为一个值)在从 interval 访问时变为 undefined

考虑以下 JQuery:

var TEST = {
DIR: null,
ITV: null,

Init: function () {
this.DIR = 1;
this.Action();
},

Action: function () {
console.log(this.DIR);
if (this.ITV == null)
this.ITV = setInterval(this.Action, 1000);
}
}

$(document).ready(function () {
TEST.Init();
});

这段代码的输出如下:

1
undefined

我理解 1,因为 TEST.DIR 的值在 Init 中设置为 1函数,它仍然是第一次调用 Action 函数时的状态。

但是,当从 interval TEST.ITV 第二次和所有其他时间调用此函数时,TEST.DIR未定义 我不明白为什么。

另请参阅此 FIDDLE .

有人可以向我解释我做错了什么或我忽略了什么吗?

谢谢!

最佳答案

this.Action 被传递给 setInterval 作为函数 w/o its context 所以 this 没有指向 的实例不再测试,但默认为window。像这样尝试:

var TEST = {
DIR: null,
ITV: null,

Init: function () {
this.DIR = 1;
this.Action();
},

Action: function () {
console.log(this.DIR);
if (this.ITV == null)
this.ITV = setInterval(function() {TEST.Action() }, 1000);
}
}

$(document).ready(function () {
TEST.Init();
});

http://jsfiddle.net/h44y81Lu/4/

关于javascript - 设置间隔后变量未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27800251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com