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中this关键字(翻译+自我理解)
Oct 20 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
Aug 21 Javascript
angularjs表格分页功能详解
Jan 21 Javascript
JS实现title标题栏文字不间断滚动显示效果
Sep 07 Javascript
AngularJS删除路由中的#符号的方法
Sep 20 Javascript
JavaScript拖动层Div代码
Mar 01 Javascript
JS中用EL表达式获取上下文参数值的方法
Mar 28 Javascript
JS 验证码功能的三种实现方式
Nov 26 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
Nov 30 Javascript
在VUE中实现文件下载并判断状态的方法
Nov 08 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
Jul 30 Javascript
JavaScript实现浏览器网页自动滚动并点击的示例代码
Dec 05 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
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
用 javascript 实现的点击复制代码
2007/03/24 Javascript
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
JS限制条件补全问题实例分析
2016/12/16 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
提升Python程序运行效率的6个方法
2015/03/31 Python
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
对pandas的dataframe绘图并保存的实现方法
2017/08/05 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
出纳岗位职责
2013/11/09 职场文书
护士的岗位职责
2013/12/04 职场文书
班级安全教育实施方案
2014/02/23 职场文书
植树节口号
2014/06/21 职场文书
财政局长个人总结
2015/03/04 职场文书
追讨欠款律师函
2015/05/27 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
java基础——多线程
2021/07/03 Java/Android