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 技巧大全(新手入门篇)
May 12 Javascript
jquery三个关闭弹出层的小示例
Nov 05 Javascript
Jquery方式获取iframe页面中的 Dom元素
May 07 Javascript
jQuery+CSS3实现树叶飘落特效
Feb 01 Javascript
js结合正则实现国内手机号段校验
Jun 19 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
Mar 30 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
Sep 14 Javascript
web前端开发upload上传头像js示例代码
Oct 22 Javascript
JS中Array数组学习总结
Jan 18 Javascript
js中开关变量使用实例
Feb 24 Javascript
HTML5实现微信拍摄上传照片功能
Apr 21 Javascript
Angular 4.0学习教程之架构详解
Sep 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
DC这些乐高系列动画电影你看过几部?
2020/04/09 欧美动漫
帖几个PHP的无限分类实现想法~
2007/01/02 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
PHP中的常见魔术方法功能作用及用法实例
2015/07/01 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
javascript this用法小结
2008/12/19 Javascript
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
JQuery 1.3.2以上版本中出现pareseerror错误的解决方法
2011/01/11 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
微信小程序网络请求wx.request详解及实例
2017/05/18 Javascript
jQuery实现拼图小游戏(实例讲解)
2017/07/24 jQuery
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
js实现内置计时器
2019/12/16 Javascript
10招!看骨灰级Pythoner玩转Python的方法
2019/04/15 Python
python查看文件大小和文件夹内容的方法
2019/07/08 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
用python实现英文字母和相应序数转换的方法
2019/09/18 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
班级安全教育实施方案
2014/02/23 职场文书
党支部公开承诺践诺书
2014/03/28 职场文书
骨干教师培训方案
2014/05/06 职场文书
教师党的群众路线学习心得体会
2014/11/04 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
稽核岗位职责范本
2015/04/13 职场文书
会议简报格式范文
2015/07/20 职场文书
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android
Python函数对象与闭包函数
2022/04/13 Python
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android