小元
博客
详情文字在这里缓缓展开
静候你翻开这一页

惰性函数

js拓展系列之惰性函数,什么是惰性函数,它能做什么?尽请点开文章一探究竟吧。

惰性函数


   什么是惰性函数:

       惰性函数是指在函数第一次调用时,会对函数进行重定义或修改,以避免重复的判断和计算,提高函数的执行效率。惰性函数通常用于优化性能,特别是在需要频繁调用的情况下。


   它能做什么:

       1. 避免重复的判断或计算

       2. 减少内存占用

       3. 提高系统性能


   主要应用场景:

       你可以用它来初始化函数,比如在页面加载时你可能会有到某些资源,但这些资源不是所有页面都需要用到的,那就可以考虑使用它来进行缓存,或使用它来延迟加载,你还可以使用它来进一步优化对不同游览器的兼容性处理,具体列子请看下场景见演示。


   场景演示:

       在本示列场景中,主要获取用户所用的游览器类型,针对不同浏览器可进行事件绑定、样式处理等。

       用户使用游览器访问网站时,对本次访问而言我们可认为当前游览器类型是不可切换的,所以我们只需获取一次便可,无需重复判断。


       代码演示:

function browsers() {
		const ua = navigator.userAgent.toLowerCase();
		if (/msie/i.test(ua) && !/opera/.test(ua)) {
			browsers = () => {
				console.log("IE")
			};
		} else if (/firefox/i.test(ua)) {
		    browsers = () => {
		    	console.log("Firefox")
		    };
		} else if (/chrome/i.test(ua) && /webkit/i.test(ua) && /mozilla/i.test(ua)) {
		   browsers = () => {
		   	console.log("Chrome")
		   };
		} else if (/opera/i.test(ua)) {
		    browsers = () => {
		    	console.log("Opera")
		    };
		} else if (/iPad/i) {
		    browsers = () => {
		    	console.log("ipad")
		    };
		}
		else if (/webkit/i.test(ua) && !(/chrome/i.test(ua) && /webkit/i.test(ua) && /mozilla/i.test(ua))) {
		   browsers = () => {
				console.log("Safari")
		   };
		} else {
			browsers = () => {
				console.log("unKnow")
			};
		}
	}

       当我们将上述代码复制到控制台时,复制函数名称可发现打印内容为函数本身。

       截图如下:

1717830836541.png

       让我们执行一次函数,再次复制函数名称,此时输出内容为第一次执行的结果,它覆盖了主函数。

       结果如下所示:1717830924931.png

       此时不管我们在执行多少次结果都是一样结果。

       1717831116053.png


   总结:

       惰性函数,就是在函数内部对当前函数进行重定义,当函数内存在多个分支时,它始终以第一次执行结果的分支为准备,并覆盖主函数。


若有任何问题欢迎在评论区下方留言指正,本篇文章封面来源于互联网,若有侵权请在下方留言,会第一时间删除致歉。

渝ICP备2024031078号-1
本网站一切内容不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
如无意中侵犯了企业或个人的知识产权等,请及时通过电子邮件(1102905617@qq.com)告知我,本网站将会给予删除。
最新公告
😊访客你好,很高兴你的到来,本博客仍在建设中,还有些许功能尚在开发中,最后祝你在此能有所收获。
💥小元博客第三代自2025年9月上线以来,2026/08/09日迎来了它的第三次更新本次更新内容如下:
1. 文章详情页样式变更,由原来的弹窗改为单独的页面。
2. 使用Nuxt对项目进行了SEO优化,优化了搜索引擎的抓取和索引。
3. 对验签进行了优化,降低了请求被误触发拦截的概率。
4. 移动端也正在稳步推进中,在不久的将来会与大家见面。
5. 修复了首页黄历节日不显示的问题,以及其它bug的修复。