日期:2014-05-16  浏览次数:20356 次

我在网上看到这段js代码 有些不行白的做了注释 希望大家可以帮帮我
 
// 取自 UnderscoreJS 实用框架
function debounce(func, wait, immediate) {
var timeout; //定义一个timeout变量
return function() { //返回一个匿名函数
var context = this, args = arguments;//定义变量context 代表当前的对象  args变量代表什么??
var later = function() {//定义一个函数变量
timeout = null;{//置变量为空
if (!immediate) func.apply(context, args);//immediate是参数传进来的 如果immediate参数不传的话 此时这个值是什么???true 还是false??这里的 args 代表什么??
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
}
// 添加resize的回调函数,但是只允许它每300毫秒执行一次
window.addEventListener('resize', debounce(function(event) {
// 这里写resize过程
}, 300));

我在网上看到这段js代码 有些不行白的做了注释 希望大家可以帮帮我
谢谢大家了

------解决方案--------------------
arguments是所有的变量,是一个类似数组的对象.
immediate不传的话,就是undefined, !immediate就等于true
------解决方案--------------------
var context = this, args = arguments;//定义变量context 代表当前的对象  args变量代表什么??

这里的args变量记录的是debounce函数调用的实参数组。你后面的函数调用时,arguments[0]指匿名函数function(event) {// 这里写resize过程},arguments[1]指300;