Javascript 高阶函数

javascript 的高阶函数绝不是意味着象多项式一样,有着高阶指数,哈哈~~~
实际上,是由于在js 语言中,function 是被当作一个对象的,因此使得function支持:

  • function 可以作为参数被传递
  • function 可以作为返回值输出

这是在《javascript设计模式和开发实践》中定义的。

先来看几个简单的例子:

function onClick(KaTeX parse error: Expected '}', got 'EOF' at end of input: …{ console.log(event.name);
}
${"#id"}.addEventListener(“click”, onClick)
在上述例子中, onClick 就是作为参数传入的addEventListener 中的。
Ok, 我们来看几个稍微复杂一点的例子:

节流

当一个操作频繁发生时,很可能影响我们页面的性能,因此可以对函数进行封装,来进行节流:

var throttle = function(time, fn) {
let start = Date.now();
return function() {
let args = arguments;
let self = this;
let now = Date.now();
if (now - start > time) {
fn.call(self, args);
start = Date.now();
}
}
}
var newClick = throttle(2000,onClick);

${"#id"}.addEventListener(“click”, newClick);

懒惰加载

浏览器特征检测是前端开发中必不可少的,比如返回顶部,我们需要区分火狐和其他浏览器来决定 scrollTop 应当设置给谁。

// 新手
var gotop = function(){
if(/firefox/i.test(navigator.userAgent)) {
document.documentElement.scrollTop = 0;
} else {
document.body.scrollTop = 0;
}
}
// 老司机
var gotop = (function(){
var isFF = /firefox/i.test(navigator.userAgent);
var docEl = document[ isFF ? ‘documentElement’ : ‘body’ ];
return function(){
docEl.scrollTop = 0;
}
})();

在一开始就保存了 当前浏览器的特征,在这种情况下,通过闭包缓存了经常使用、基本不改变的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值