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编程起步(第五课)
Jan 10 Javascript
JTrackBar水平拖动效果
Jul 15 Javascript
JavaScript 动态改变图片大小
Jun 11 Javascript
Jquery 插件开发笔记整理
Jan 17 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
Mar 31 Javascript
js实现微信分享代码
Oct 11 Javascript
Angular 4.x 路由快速入门学习
May 03 Javascript
layui实现点击按钮给table添加一行
Aug 10 Javascript
Angular异步变同步处理方法
Aug 13 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
Jan 05 jQuery
layer.js之回调销毁对话框的例子
Sep 11 Javascript
javascript拖曳互换div的位置实现示例
Jun 28 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 sprintf()函数让你的sql操作更安全
2008/07/23 PHP
php实现文件下载实例分享
2014/06/02 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
js 表单验证方法(实用)
2009/04/28 Javascript
js的逻辑运算符 ||
2010/05/31 Javascript
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
Bootstrap实现登录校验表单(带验证码)
2016/06/23 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
2016/06/24 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
node实现分片下载的示例代码
2018/10/17 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
python self,cls,decorator的理解
2009/07/13 Python
TensorFlow实现卷积神经网络CNN
2018/03/09 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
Monki官网:斯堪的纳维亚的独立时尚品牌
2020/11/09 全球购物
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
《小池塘》教学反思
2014/02/28 职场文书
就业协议书
2014/09/12 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书
白银帝国观后感
2015/06/17 职场文书
地震捐款简报
2015/07/21 职场文书
Python Pygame实战之塔防游戏的实现
2022/03/17 Python
Nginx 常用配置
2022/05/15 Servers