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。
求解答。
这里的关键在
throttle()
这个函数,我这里先把throttle()
抄下来这个函数的内部过程可以简化描述为
就是说,它返回一个函数,而且返回的这个函数在执行的时候会调用最外面传入的
fn
。第一个 demo 中,
onclick
需要赋值一个函数,而throttle()
返回的就是一个函数,所以onclick
得到的是function() { fn(); }
,点击的时候会执行这个函数,而它会调用fn()
。第二个 demo 中,
onclick
得到的是functioin() { throttle(); }
,点击的时候会执行throttle()
,而throttle()
所做的事情只是返回了function() { fn(); }
,并没有调用它,所以在你看来它没有正常执行。