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 相关文章推荐
Jquery优化效率 提升性能解决方案
Sep 06 Javascript
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
May 07 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
Aug 14 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
May 13 Javascript
Bootstrap三种表单布局的使用方法
Jun 21 Javascript
基于React Native 0.52实现轮播图效果
Aug 25 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
Feb 27 jQuery
vue+web端仿微信网页版聊天室功能
Apr 30 Javascript
小程序实现层叠卡片滑动效果
Aug 26 Javascript
webpack+vue.js构建前端工程化的详细教程
May 10 Javascript
深入了解JS之作用域和闭包
Jun 16 Javascript
微信小游戏中three.js离屏画布的示例代码
Oct 12 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
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
攻克CakePHP系列二 表单数据显示
2008/10/22 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
js代码实现微博导航栏
2015/07/30 PHP
Laravel学习教程之从入口到输出过程详解
2017/08/27 PHP
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
JavaScript对数字的判断与处理实例分析
2015/02/02 Javascript
jquery实现点击查看更多内容控制段落文字展开折叠效果
2015/08/06 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
Angularjs中ng-repeat-start与ng-repeat-end的用法实例介绍
2016/12/31 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
JavaScript实现异步图像上传功能
2018/07/12 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[37:03]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第二场 12.16
2020/12/18 DOTA
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
python中的列表与元组的使用
2019/08/08 Python
利用Python的turtle库绘制玫瑰教程
2019/11/23 Python
python 实现"神经衰弱"翻牌游戏
2020/11/09 Python
如何从一个文件档案的尾端新增记录
2016/12/02 面试题
校园学雷锋活动月总结
2014/03/09 职场文书
母亲节感恩活动记录
2014/03/16 职场文书
双语教学实施方案
2014/03/23 职场文书
金砖之国观后感
2015/06/11 职场文书
新教师教学工作总结
2015/08/14 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python
Vue.Draggable实现交换位置
2022/04/07 Vue.js