多次调用javascript函数是否会导致任何不必要的问题?
那么javascript解释器如何处理相同的多个函数调用呢?它是否会覆盖上一个,或者导致某种混乱 我已经在控制台中编写了函数,最新的函数似乎总是可以工作并覆盖旧函数,我总是担心旧函数被存储起来,我认为这可能会导致性能问题/膨胀 比如说多次调用javascript函数是否会导致任何不必要的问题?,javascript,jquery,Javascript,Jquery,那么javascript解释器如何处理相同的多个函数调用呢?它是否会覆盖上一个,或者导致某种混乱 我已经在控制台中编写了函数,最新的函数似乎总是可以工作并覆盖旧函数,我总是担心旧函数被存储起来,我认为这可能会导致性能问题/膨胀 比如说 $('body').on('click', function() { alert('hello') }); 将向hello发出警报,然后我重写同样的函数再次向hello发出警报 $('body').on('click', function() { alert('
$('body').on('click', function() { alert('hello') });
将向hello发出警报,然后我重写同样的函数再次向hello发出警报
$('body').on('click', function() { alert('hello') });
会发生什么?是否替换它,创建新副本?是的,即使您将更多事件绑定到同一元素,即使事件与以前绑定的事件相同,事件侦听器仍将保持活动状态 您可以在中观察到这种行为
若要删除以前绑定的侦听器,必须使用该方法或其jQuery替代方法。您要绑定两次事件,因此每次单击两次代码。您要绑定两个事件,使用两个相同但不同的匿名函数。这就是为什么JSLint建议不要在循环中定义匿名函数的原因。第一个和第二个是否尝试运行该代码?如果你这样做,你会立刻找到答案。我真的不明白投票结果,但不管怎样,有些人把内裤扎成一团,认为自己比别人优越。谢谢所有帮助过我的人。因此,很明显,要避免这种情况,并确保清理事件,这就是为什么在主干网或任何客户端框架中销毁您的视图都很重要的原因。多亏了您,让那些投了反对票的人见鬼去吧:)
// 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)