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 相关文章推荐
VBScript版代码高亮
Jun 26 Javascript
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
Jan 24 Javascript
在javascript中如何得到中英文混合字符串的长度
Jan 17 Javascript
对JavaScript中this指针的新理解分享
Jan 31 Javascript
js光标定位文本框回车表单提交问题的解决方法
May 11 Javascript
jQuery实现图片左右滚动特效
Apr 20 Javascript
不得不分享的JavaScript常用方法函数集(下)
Dec 25 Javascript
jquery显示隐藏元素的实现代码
May 19 Javascript
React 使用recharts实现散点地图的示例代码
Dec 07 Javascript
Vue组件之高德地图地址选择功能的实例代码
Jun 21 Javascript
解决Vue中 父子传值 数据丢失问题
Aug 27 Javascript
详解Node.js如何处理ES6模块
May 15 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 巧用数组降低程序的时间复杂度
2010/01/01 PHP
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
php调用nginx的mod_zip模块打包ZIP文件
2014/06/11 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
PHP中定义数组常量(array常量)的方法
2014/11/17 PHP
PHP通过API获取手机号码归属地
2015/05/28 PHP
php显示时间常用方法小结
2015/06/05 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
javascript控制台详解
2015/06/25 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
关于js里的this关键字的理解
2015/08/17 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
Javascript的比较汇总
2016/07/25 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
2017/10/12 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
微信小程序自定义toast组件的方法详解【含动画】
2019/05/11 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
编写Python CGI脚本的教程
2015/06/29 Python
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
精灵市场:Pixie Market
2019/06/18 全球购物
2015年乡镇扶贫工作总结
2015/04/08 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书
初中政教处工作总结
2015/08/12 职场文书