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重要知识更新
Jul 08 Javascript
JS与框架页的操作代码
Jan 17 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
Jun 30 Javascript
js中使用replace方法完成某个字符的转换
Aug 20 Javascript
Javascript调用函数方法的几种方式介绍
Mar 20 Javascript
浅谈javascript实现八大排序
Apr 27 Javascript
jQuery遮罩层效果实例分析
Jan 14 Javascript
jQuery实现摸拟alert提示框
May 22 Javascript
使用DeviceOne实现微信小程序功能
Dec 29 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
May 26 Javascript
jQuery实现动态删除LI的方法
May 30 jQuery
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
Oct 11 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
实现树状结构的两种方法
2006/10/09 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
JavaScript游戏之是男人就下100层代码打包
2010/11/08 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
把普通对象转换成json格式的对象的简单实例
2016/07/04 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
Js apply方法详解
2017/02/16 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
js实现一键复制功能
2017/03/16 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
谈谈Python进行验证码识别的一些想法
2016/01/25 Python
基于python实现高速视频传输程序
2019/05/05 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
2019/06/13 Python
基于python实现删除指定文件类型
2020/07/21 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
python help函数实例用法
2020/12/06 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
CSS3颜色值RGBA与渐变色使用介绍
2020/03/06 HTML / CSS
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
如何删除一个表里面的重复行
2013/07/13 面试题
群众路线学习心得体会范文
2014/11/05 职场文书
党支部综合考察意见
2015/06/01 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书