http://jsfiddle.net/haichao/f...
http://jsfiddle.net/haichao/d...
第一个 demo 可以正常执行,第二个 demo 没有正常执行。
两个 demo 区别:
btn.onclick = throttle(function () {
console.log(1)
}, 1000)
btn.onclick = function () {
throttle(function () {
console.log(1)
}, 1000)
}
另外关于 throttle 函数的实现中,return 一个 function,这个 function 并没有执行,为什么仍然执行了 fn。
求解答。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这里的关键在
throttle()这个函数,我这里先把throttle()抄下来这个函数的内部过程可以简化描述为
就是说,它返回一个函数,而且返回的这个函数在执行的时候会调用最外面传入的
fn。第一个 demo 中,
onclick需要赋值一个函数,而throttle()返回的就是一个函数,所以onclick得到的是function() { fn(); },点击的时候会执行这个函数,而它会调用fn()。第二个 demo 中,
onclick得到的是functioin() { throttle(); },点击的时候会执行throttle(),而throttle()所做的事情只是返回了function() { fn(); },并没有调用它,所以在你看来它没有正常执行。节流函数,前一个先执行了所以能看到,后一个是后执行的,可能就有没有效果了