前端性能优化(三)——惰性函数

惰性函数表示,此函数有很多个分支判断,但这些分支判断只会在第一次调用时执行,执行后会修改此函数,再次调用时无须判断。

这种函数的应用场景之一是在兼容性判断时,例如:

// 兼容的事件监听函数,非惰性
function addEvent(event, el, handler) {
  if(el.addEventListener) {
    el.addEventListener(event, handler);
  } else if (el.attachEvent) {
    el.attachEvent("on"+event, handler);
  } else {
    el["on"+event] = handler;
  }
}
// 兼容的事件监听函数,惰性
function addEvent(event, el, handler) {
  if(el.addEventListener) {
    addEvent = function(event, el, handler) {
      el.addEventListener(event, handler);
    }
  } else if (el.attachEvent) {
    addEvent = function(event, el, handler) {
      el.attachEvent("on"+event, handler);
    }
  } else {
    addEvent = function(event, el, handler) {
      el["on"+event] = handler;
    }
  }
  return addEvent(event, el, handler);
}

还有在单例模式中的例子:

function singleton() {
  // 单例
  let instance = this;
  // 属性
  this.name = "singleton";
  // 重写构造函数,用闭包实现单例
  singleton = function() {
    return singleton;
  }
}
惰性函数的特点
  1. 应用频繁,如果只调用一次,则失去了意义
  2. 复杂的分支判断,若无分支判断,也失去了意义
  3. 环境固定,函数中的判断依据不会变化,所以只需要首次调用时判断即可
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,321评论 9 118
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,238评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,347评论 25 709
  • 每个孩子来到这个世界,都赋予了他不平凡的意义,如果你不够成熟,请不要辜负上天给你照顾他的权利,请先让那个幼稚的,自...
    yln大白阅读 241评论 0 0
  • 20 学霸育儿师 上一篇:【孩子,不是妈妈不爱你!】第十三章 故事是这样的,钟辉清了清嗓子准备开讲了...... ...
    Suven阅读 423评论 2 8