多次调用javascript函数会导致任何不必要的问题吗?

时间:2015-04-23 08:26:21

标签: javascript jquery

那么javascript解释器如何处理多个相同的函数调用呢?它是否会覆盖前一个,或导致某种混乱?

我已经在控制台中编写了函数,最新版本似乎总是工作并覆盖旧函数,我总是害怕旧函数被存储掉,我认为这会导致性能问题/膨胀。

例如。

$('body').on('click', function() { alert('hello') });

将警告hello,然后我重写相同的功能再次警告你好

$('body').on('click', function() { alert('hello') });

会发生什么?它会替换它,创建一个新副本吗?

1 个答案:

答案 0 :(得分:2)

是的,即使您将更多事件绑定到同一元素,事件侦听器仍将保持活动状态,即使该事件与先前绑定的事件相同。

您可以在this jsfiddle中观察到此行为。

// Example with anonymous function - this will print 'hello' twice
$('#btn1').on('click', function() { alert('hello') })
$('#btn1').on('click', function() { alert('hello') })

// Example with named function - this will work exactly the same
function sayHello () {
    alert('hello')
}

$('#btn2').on('click', sayHello)
$('#btn2').on('click', sayHello)

要删除以前绑定的侦听器,必须使用removeEventListener()方法或其jQuery替代方法unbind()