gpt4 book ai didi

javascript - 每次 setInterval 触发时都会发生 SyntaxError

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

我正在尝试用 JavaScript 为游戏编写一个简单的 AI。 (游戏不是我的。)这是我目前为 AI 编写的代码的范围:

function AIManager(grid) {
this.events = {};
this.grid = grid;

setInterval(new function(){console.log("hello")}, 1000);
}

当我尝试运行游戏时,控制台输出一次“hello”,然后是

Uncaught SyntaxError: Unexpected identifier

每秒一次,没有附加堆栈跟踪或行号。 (当我将间隔设置为 1 毫秒而不是 1000 毫秒时,此错误每 1 毫秒打印一次,因此它肯定是在响应 setInterval 函数。)

谁能帮我理解为什么会这样?我现在有点 javascript 菜鸟......谢谢!

最佳答案

在这种情况下不需要 new

setInterval() 需要一个 Functionfunction expression将已经创建。

setInterval(function(){console.log("hello")}, 1000);
// logs 'hello'
// logs 'hello'
// ...

"hello" 使用 new 记录一次,因为它立即调用 Function 作为构造函数。

var o = new function () {
console.log("hello");
};
// logs "hello" during construction

console.log(typeof o); // "object"

并且,SyntaxError 可能是因为 setInterval() 发现参数不是 Function,正在转换实例 Object 到它可以evaluate 的 String:

setInterval(new function () {
this.toString = function () {
return "console.log('foo');";
};
}, 1000);
// logs 'foo'
// logs 'foo'
// ...

注意:由于计时器(setTimeout()setInterval())实际上并未标准化,因此前面代码段中的行为在引擎之间可能不一致。

关于javascript - 每次 setInterval 触发时都会发生 SyntaxError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22445148/

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