JS:你的函数不是一个函数!TypeError

JS: Your function is not a function! TypeError

本文关键字:函数 一个 TypeError JS      更新时间:2023-09-26

我有一款小型RTS游戏,玩家可以攻击怪物。我希望它的设置,当游戏加载或开始时,strike()功能将在3秒后触发。然而,当我运行下面的代码时,我得到一个类型错误,"strike()"不是一个函数。如果它不是一个函数,那么它是什么?

如果你想知道player.cc是什么意思,它代表当前字符。剩下的只是参考我在游戏中的平衡表。

dom.el("strike").onclick = function strike() {
    HitCalc(player.cc, monster.cc);
    actor.expCounter(player.cc);
    actor.balanceCounter(player.cc, monster.cc);
};
 setTimeout(strike(), 3000);

可能有帮助的附加代码:

dom = {
    el: function (id){
        return document.getElementById(id);
    },
HTML:

<button id="strike" type="button" class="buttons">Strike</button>

当您认为将名称分配给事件处理程序的函数仍然被提升并在当前作用域中声明时,您在这一点上是错误的:它仍然是一个像任何匿名内联函数一样分配给属性的函数。

你需要的是:

function strike() {
    HitCalc(player.cc, monster.cc);
    actor.expCounter(player.cc);
    actor.balanceCounter(player.cc, monster.cc);
};
dom.el("strike").onclick = strike;
// Note that setTimeout expects a reference to the function rather than
// a function call!!
setTimeout(strike, 3000);