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代码
Mar 10 Javascript
iframe调用父页面函数示例详解
Jul 17 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
Dec 20 Javascript
AngularJs入门教程之环境搭建+创建应用示例
Nov 01 Javascript
jQuery根据ID、CLASS、等获取对象的实例
Dec 04 Javascript
JS数组搜索之折半搜索实现方法分析
Mar 27 Javascript
jQuery滚动插件scrollable.js用法分析
May 25 jQuery
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
May 27 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
Sep 16 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
Apr 22 Javascript
vue 使用post/get 下载导出文件操作
Aug 07 Javascript
vue或react项目生产环境去掉console.log的操作
Sep 02 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
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
js函数获取html中className所在的内容并去除标签
2013/09/08 Javascript
javascript 判断整数方法分享
2014/12/16 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
jQuery简单获取键盘事件的方法
2016/01/22 Javascript
基于JS实现导航条flash导航条
2016/06/17 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
Validform验证时可以为空否则按照指定格式验证
2017/10/20 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
为Python程序添加图形化界面的教程
2015/04/29 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
python3.5 tkinter实现页面跳转
2018/01/30 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
django使用django-apscheduler 实现定时任务的例子
2019/07/20 Python
基于Python实现大文件分割和命名脚本过程解析
2019/09/29 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
2019/10/14 Python
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
KIKO MILANO荷兰网上商店:意大利专业化妆品品牌
2017/05/12 全球购物
年会活动策划方案
2014/01/23 职场文书
财务总监岗位职责
2014/03/07 职场文书
花坛标语大全
2014/06/30 职场文书
租房安全协议书
2014/08/20 职场文书
音乐教师求职信范文
2015/03/20 职场文书
2015年办公室工作总结范文
2015/03/31 职场文书
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技