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面向对象编程之对象使用分析
Aug 19 Javascript
jQuery Ajax请求状态管理器打包
May 03 Javascript
js模拟淘宝网的多级选择菜单实现方法
Aug 18 Javascript
JS使用JSON作为参数实例分析
Jun 23 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
Oct 13 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
Mar 30 Javascript
bootstrap table单元格新增行并编辑
May 19 Javascript
JS实现监控微信小程序的原理
Jun 15 Javascript
关于Vue项目跨平台运行问题的解决方法
Sep 18 Javascript
vue路由插件之vue-route
Jun 13 Javascript
layui prompt 设置允许空白提交的方法
Sep 24 Javascript
ant-design-vue 快速避坑指南(推荐)
Jan 21 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 UTF8编码内的繁简转换类
2009/07/20 PHP
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
javascript弹出窗口中增加确定取消按钮
2016/06/24 Javascript
js实现文本上下来回滚动
2017/02/03 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
JavaScript实现分页效果
2017/03/28 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
2017/07/20 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
关于react中组件通信的几种方式详解
2017/12/10 Javascript
jQuery替换节点元素的操作方法
2018/03/18 jQuery
Python数据分析matplotlib设置多个子图的间距方法
2018/08/03 Python
一文带你了解Python中的字符串是什么
2018/11/20 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
在vscode中启动conda虚拟环境的思路详解
2020/12/25 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
使用phonegap检测网络状态的方法
2017/03/30 HTML / CSS
最新计算机专业自荐信
2013/10/16 职场文书
业绩考核岗位职责
2014/02/01 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
法院反腐倡廉心得体会
2014/09/09 职场文书
反四风对照检查材料
2014/09/22 职场文书
单位作风建设自查报告
2014/10/23 职场文书
成绩报告单家长评语
2014/12/30 职场文书
营业员岗位职责
2015/02/11 职场文书
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL
如何解决php-fpm启动不了问题
2021/11/17 PHP
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js