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 相关文章推荐
用JS判断IE版本的代码 超管用!
Aug 09 Javascript
Prototype源码浅析 Number部分
Jan 16 Javascript
js前台判断开始时间是否小于结束时间
Feb 23 Javascript
js写一个弹出层并锁屏效果实现代码
Dec 07 Javascript
表格奇偶行设置不同颜色的核心JS代码
Dec 24 Javascript
详解JavaScript正则表达式中的global属性的使用
Jun 16 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
Oct 28 Javascript
解决jquery无法找到其他父级子集问题的方法
May 10 Javascript
使用three.js 画渐变的直线
Jun 05 Javascript
onmouseover事件和onmouseout事件全面理解
Aug 15 Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
Mar 10 Javascript
js实现带箭头的进度流程
Mar 26 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下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
php中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
PHP模板引擎smarty详细介绍
2015/05/26 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
Jquery 快速构建可拖曳的购物车DragDrop
2009/11/30 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
node.js微信公众平台开发教程
2016/03/04 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
Javascript的this详解
2019/03/23 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
Python help()函数用法详解
2014/03/11 Python
Python对列表的操作知识点详解
2019/08/20 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
Python排序函数的使用方法详解
2020/12/11 Python
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
药剂专业学生求职信范文
2013/12/28 职场文书
研修第一天随笔感言
2014/02/15 职场文书
任命书标准格式
2015/03/02 职场文书
python - asyncio异步编程
2021/04/06 Python
「月刊Comic Alive」2022年5月号封面公开
2022/03/21 日漫
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js
解决vue中provide inject的响应式监听
2022/04/19 Vue.js