惰性函数
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")
};
}
}当我们将上述代码复制到控制台时,复制函数名称可发现打印内容为函数本身。
截图如下:

让我们执行一次函数,再次复制函数名称,此时输出内容为第一次执行的结果,它覆盖了主函数。
结果如下所示:
此时不管我们在执行多少次结果都是一样结果。

总结:
惰性函数,就是在函数内部对当前函数进行重定义,当函数内存在多个分支时,它始终以第一次执行结果的分支为准备,并覆盖主函数。
若有任何问题欢迎在评论区下方留言指正,本篇文章封面来源于互联网,若有侵权请在下方留言,会第一时间删除致歉。
