那么javascript解释器如何处理多个相同的函数调用呢?它是否会覆盖前一个,或导致某种混乱?
我已经在控制台中编写了函数,最新版本似乎总是工作并覆盖旧函数,我总是害怕旧函数被存储掉,我认为这会导致性能问题/膨胀。
例如。
$('body').on('click', function() { alert('hello') });
将警告hello
,然后我重写相同的功能再次警告你好
$('body').on('click', function() { alert('hello') });
会发生什么?它会替换它,创建一个新副本吗?
答案 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()。