gpt4 book ai didi

JavaScript setTimeout 在某些对象类型上运行良好,而在其他对象类型上则不然?

转载 作者:行者123 更新时间:2023-11-28 16:32:23 25 4
gpt4 key购买 nike

这可能最好用代码示例来解释......

Object_A = {
testLoop:function(){
log("running");
setTimeout(Object_A.testLoop, 1000);
}
};

Object_B = function(){
this.testLoop= function(){
log("running");
setTimeout(this.testLoop(), 1000);
}
}

Object_A.testLoop(); // logs message to console every 1000ms, as you would expect

var objB = new Object_B();
objB.testLoop(); // runs infinitely at once (no 1000ms interval) until "Maxium call stack size exceeded"

为什么循环在静态对象中运行良好,但在声明生成函数的“类类”对象中却运行不佳?

(旁注:这两种类型的对象的正确名称是什么?我一直说“静态”和“非静态”对象,但我觉得这是不正确的。)

最佳答案

函数是 JavaScript 中的一等公民。给定一个如下定义的函数:

function foo()
{
return 0;
}

这之间有一个区别:

var result = foo();

还有这个:

var result = foo;

第一个调用名为 foo 的函数,并将该调用返回的值分配给 result。在这种情况下,结果将等于零。

第二个将 result 分配给名为 foo 的函数。现在,result 不等于 0; result 等于函数 foo

您现在发现代码中存在问题了吗?

关于JavaScript setTimeout 在某些对象类型上运行良好,而在其他对象类型上则不然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5465906/

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