JavaScript惰性载入函数实例分析


Posted in Javascript onMarch 27, 2019

本文实例讲述了JavaScript惰性载入函数。分享给大家供大家参考,具体如下:

惰性载入函数

惰性载入函数表示函数执行的分支仅会发生一次,有两种实现惰性载入函数的方式,第一种是在函数被调用时再处理,在第一次调用中,该函数会覆盖为另外一个按合适方式执行的函数,这样任何对函数的调用都不用再经过执行的分支了。第二种实现惰性载入的方式是在声明函数时就制定适当的函数,这样,第一次调用函数时就不会损失性能了,而在代码首次加载时会损失一点儿性能。

载入方式一

var flag = 1;
function test1() {
 if(typeof flag === 'undefined') {
  test1 = function() {
   return 0;
  }
 } else if(flag === 1) {
  test1 = function() {
   return 1;
  }
 } else {
  test1 = function () {
   return -1;
  }
 }
 return test1();
}

这里if语句的每个分支都会为test1变量赋值,有效覆盖了原有的函数,最后一步便是调用新赋的函数,下一次调用test1()的时候就会直接调用被分配的函数,就不会再走if语句了,这样就可以提高性能。

载入方式二

var flag = 1;
var test2 = (function() {
 if(typeof flag === 'undefined') {
  return function() {
   return 0;
  }
 } else if(flag === 1) {
  return function () {
   return 1;
  }
 } else {
  return function () {
   return -1;
  }
 }
})();

不同点是使用了立即执行函数,通过var来定义函数,在每个if分支中return一个函数

总结

这两种方式都能避免执行不必要的代码。方式一中第一次调用会损失性能,方式二重首次加载时会损失性能

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript入门·对象属性方法大总结
Oct 01 Javascript
Javascript中valueOf与toString区别浅析
Mar 19 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
Aug 11 Javascript
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
Jun 26 Javascript
JS鼠标拖拽实例分析
Nov 23 Javascript
JQuery ztree带筛选、异步加载实例讲解
Feb 25 Javascript
浅谈javascript中的Function和Arguments
Aug 30 Javascript
简易的JS计算器实现代码
Oct 18 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
Mar 06 Javascript
Node.js爬虫如何获取天气和每日问候详解
Aug 26 Javascript
微信公众号网页分享功能开发的示例代码
May 27 Javascript
JavaScript parseInt0.0000005打印5原理解析
Jul 23 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
Mar 27 #Javascript
详解JS浏览器事件循环机制
Mar 27 #Javascript
详解如何更好的使用module vuex
Mar 27 #Javascript
原生js实现获取form表单数据代码实例
Mar 27 #Javascript
JQueryDOM之样式操作
Mar 27 #jQuery
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
Mar 27 #Javascript
Node.js 多线程完全指南总结
Mar 27 #Javascript
You might like
使用PHP Socket写的POP3类
2013/10/30 PHP
PHP get_html_translation_table()函数用法讲解
2019/02/16 PHP
mysqli扩展无法在PHP7下升级问题的解决
2019/09/10 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
一个可拖拽列宽表格实例演示
2012/11/26 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
ExtJs纵坐标值重复问题的解决方法
2014/02/27 Javascript
jQuery中live()方法用法实例
2015/01/19 Javascript
jQuery实现点击小图显示大图代码分享
2015/08/25 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
JavaScript暂停和继续定时器的实现方法
2016/07/18 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
js实现碰撞检测
2021/01/29 Javascript
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
python实现树形打印目录结构
2018/03/29 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
c/c++某大公司的两道笔试题
2014/02/02 面试题
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
医院护士求职自荐信格式
2013/09/21 职场文书
职业教育毕业生求职信
2013/11/09 职场文书
空气的环保标语
2014/06/12 职场文书
学校师德师风整改措施
2014/10/27 职场文书
社区宣传标语口号
2015/12/26 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
Java使用jmeter进行压力测试
2021/07/09 Java/Android