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 Code实现IE邮件转发新浪微博
Jul 03 Javascript
JavaScript伸缩的菜单简单示例
Dec 03 Javascript
浅谈javascript原型链与继承
Jul 13 Javascript
js+css实现超简洁的二级下拉菜单效果代码
Sep 07 Javascript
JavaScript实现全选取消效果
Dec 14 Javascript
Vue2.0用户权限控制解决方案的示例
Feb 10 Javascript
详解javascript设计模式三:代理模式
Mar 25 Javascript
Vue使用axios出现options请求方法
May 30 Javascript
Vue中对iframe实现keep alive无刷新的方法
Jul 23 Javascript
JS字符串和数组如何实现相互转化
Jul 02 Javascript
Javascript柯里化实现原理及作用解析
Oct 22 Javascript
Ajax实现异步加载数据
Nov 17 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-MySQL教程归纳总结
2008/06/07 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
2015/04/03 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
PHP中Laravel 关联查询返回错误id的解决方法
2017/04/01 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
2018/05/12 PHP
漂亮的提示信息(带箭头)
2007/03/21 Javascript
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
2013/04/10 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
Vue+Openlayers自定义轨迹动画
2020/09/24 Javascript
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
2018/04/30 Python
Python获取系统所有进程PID及进程名称的方法示例
2018/05/24 Python
使用python语言,比较两个字符串是否相同的实例
2018/06/29 Python
python中的常量和变量代码详解
2018/07/25 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
使用python去除图片白色像素的实例
2019/12/12 Python
基于Python正确读取资源文件
2020/09/14 Python
python利用pytesseract 实现本地识别图片文字
2020/12/14 Python
基于 HTML5 WebGL 实现的垃圾分类系统
2019/10/08 HTML / CSS
一家专门做特卖的网站:唯品会
2016/10/09 全球购物
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
意大利香水和化妆品购物网站:Parfimo.it
2019/10/06 全球购物
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
医学院护理专业应届生求职信
2013/11/12 职场文书
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
股东合作协议书
2014/09/12 职场文书
2015年计算机教师工作总结
2015/07/22 职场文书
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android