javascript - JS : Your function is not a function! 类型错误

标签 javascript

我有一个小型 RTS 游戏,你可以在其中攻击怪物。我希望将其设置为当游戏加载或启动时,strike() 函数将在 3 秒后触发。然而,当我运行下面的代码时,我收到一个类型错误:“strike()”不是一个函数。如果它不是一个函数,那么它是什么?

如果您想知道player.cc 的含义,它代表当前 Angular 色。其余的只是指我游戏中的平衡表。

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);

关于javascript - JS : Your function is not a function! 类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38170335/

相关文章:

c# - ASP.NET 隐藏 <asp :Panel>/<th>/<tr>/<td> inside a ListView

javascript - 焦点在 android 上不起作用

javascript - math.round 小数部分中的小数 0,2 到 1

javascript - 如何在 Angular 5 中调用外部 javascript 函数?

javascript - Selenium:多浏览器并行测试

javascript - 添加到序列化数组中的复杂对象在服务器端始终为空

javascript - C# 将图像数据发送到具有破坏图像 src 的双斜杠的 View

javascript - 没有哈希值 '#' 的 AngularJS 路由 - 无法正常工作

javascript - 谷歌地图 : Simple app not working on IE

javascript - 如何在react js中的map函数中进行增量