什么是Javascript事件侦听器';什么范围?

什么是Javascript事件侦听器';什么范围?,javascript,Javascript,在C语言中,如果我不动态地malloc函数中的任何内容,那么当函数结束时它是自由的。我不知道Javascript(特别是事件侦听器)在这种意义上是如何工作的。问题是,如果在函数中声明了事件侦听器,那么它是在函数结束时被终止还是继续侦听 上下文 我有一个对象page{},它有一个方法battle() 在一个页面中选择\u action()方法,我调用battle() 当battle()结束时,将再次调用choose\u action Battle()。当按下id为“attack”的img时,调用

在C语言中,如果我不动态地malloc函数中的任何内容,那么当函数结束时它是自由的。我不知道Javascript(特别是事件侦听器)在这种意义上是如何工作的。问题是,如果在函数中声明了事件侦听器,那么它是在函数结束时被终止还是继续侦听


上下文

我有一个对象
page{}
,它有一个方法
battle()

在一个
页面中选择\u action()
方法,我调用
battle()

battle()
结束时,将再次调用
choose\u action

Battle()。当按下id为“attack”的img时,调用
attack()
(也是
page{}
方法)函数


我的观点是,
事件侦听器是在
battle()
中创建的吗?或者当
battle()
结束时他们被释放了?我担心再次调用battle()会创建双倍的
攻击\u事件\u侦听器
,每次单击都会导致攻击(n)次,n是调用
battle()
的次数

请不要只解释你的代码,展示它@蒂姆,我根本没有密码。这就是我计划做的代码,我想知道这是否有效,然后再尝试,我会花4个多小时来正确实现所有这些。如果你尝试过,你已经知道了…你可以在战斗结束时使用
removeEventListener
(),这应该解决你的问题。请不要只解释你的代码,展示它@蒂姆,我根本没有密码。这就是我计划做的代码,我想知道这是否有效,然后再尝试,我会花4个多小时来正确实现所有这一切。你已经知道,如果你尝试过……你可以在战斗结束时使用
removeEventListener
(),这应该可以解决你的问题。