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中noConflict()用法实例分析
Feb 08 Javascript
JavaScript对象数组的排序处理方法
Oct 21 Javascript
详解JavaScript中的Unescape()和String() 函数
Nov 09 Javascript
js实现(全选)多选按钮的方法【附实例】
Mar 30 Javascript
jquery动态切换背景图片的简单实现方法
May 14 Javascript
jQuery插件ajaxFileUpload使用详解
Jan 10 Javascript
微信小程序中的swiper组件详解
Apr 14 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
Sep 20 Javascript
移动前端图片压缩上传的实例
Dec 06 Javascript
JS获取本地地址及天气的方法实例小结
May 10 Javascript
js实现3D旋转相册
Aug 02 Javascript
vue el-table实现递归嵌套的示例代码
Aug 14 Vue.js
微信小程序实现获取准确的腾讯定位地址功能示例
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
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
php array_walk() 数组函数
2011/07/12 PHP
php中模拟POST传递数据的两种方法分享
2011/09/16 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
2014/06/21 PHP
Thinkphp中数据按分类嵌套循环实现方法
2014/10/30 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
jquery 1.3.2 IE8中的一点点的小问题解决方法
2009/07/10 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
jQuery验证插件validation使用指南
2015/04/21 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
Python 迭代器工具包【推荐】
2016/05/06 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
浅析python继承与多重继承
2018/09/13 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
自学python的建议和周期预算
2019/01/30 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
用python实现名片管理系统
2020/06/18 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
python中@contextmanager实例用法
2021/02/07 Python
同学会邀请书大全
2014/01/12 职场文书
学生干部的自我评价分享
2014/01/18 职场文书
协议书怎么写
2014/04/21 职场文书
工作说明书范文
2014/05/07 职场文书
学校党的群众路线教育实践活动总结材料
2014/10/30 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书