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中alert弹出窗口文本换行问题简单详细说明
Dec 11 Javascript
javascript trim函数在IE下不能用的解决方法
Sep 12 Javascript
node.js中的console.warn方法使用说明
Dec 09 Javascript
node.js中的fs.realpathSync方法使用说明
Dec 16 Javascript
实践中学习AngularJS表单
Mar 21 Javascript
JavaScript String 对象常用方法详解
May 13 Javascript
Bootstrap 布局组件(全)
Jul 18 Javascript
React实现双向绑定示例代码
Sep 19 Javascript
微信小程序 安全包括(框架、功能模块、账户使用)详解
Jan 16 Javascript
mui上拉加载功能实例详解
Apr 13 Javascript
JavaScript 中的12种循环遍历方法【总结】
May 31 Javascript
bootstrap table实现合并单元格效果
Dec 24 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
PHP4 与 MySQL 交互使用
2006/10/09 PHP
PHP 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
PHP程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解
2016/03/07 PHP
比较搞笑的js陷阱题
2010/02/07 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
原生js简单实现放大镜特效
2017/05/16 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
vue-video-player 断点续播的实现
2021/02/01 Vue.js
python中os操作文件及文件路径实例汇总
2015/01/15 Python
python中list常用操作实例详解
2015/06/03 Python
python字符串的方法与操作大全
2018/01/30 Python
Python中安装easy_install的方法
2018/11/18 Python
解决c++调用python中文乱码问题
2020/07/29 Python
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
校运会广播稿100字
2014/01/27 职场文书
大学生期末自我鉴定
2014/02/01 职场文书
国旗下演讲稿
2014/05/08 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
卖房授权委托书样本
2014/10/05 职场文书
中学生旷课检讨书500字
2014/10/29 职场文书
2015年共青团工作总结
2015/05/15 职场文书
中学校园广播稿
2015/08/18 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
坚持不是死撑,更重要的是心态
2019/08/19 职场文书
Python 如何实现文件自动去重
2021/06/02 Python
Redis RDB技术底层原理详解
2021/09/04 Redis
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python