欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

简单理解js闭包、类型引用....第一章

发布时间:2025/4/16 编程问答 3 豆豆
生活随笔 收集整理的这篇文章主要介绍了 简单理解js闭包、类型引用....第一章 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

js 闭包函数、类型引用、this指向、对象原型链...这些东西让我们对js又爱又恨!js虐我千百遍,我待js如初恋。
很多初学者一开始会觉得这些概念没什么用,导致对这些东西产生一种抵抗力。接下来我们用几段简单实用的代码来理解一下这些概念。好啦大话不多说,让我们一起来看看干货

js函数闭包

这是一段简单的函数节流,看着四不四有点方,别着急让我们一起来简单段分析一下这以小段代码。

首先定义来一个叫 throttle函数 它接收了3个参数。

首先第一个参数它是这段代码中唯一一个干实事的,也就是最终我们要执行的功能,

第二个很简单它是定时器的延迟时间

第三个节流函数指定的执行时间,也就最终运行的时候我们需要等待多久执行一次的时间

然后往下看重点来了,函数内定义了 一个 timerID和一个 startTime 两个变量,一个是定时器id,一个是函数执行的开始时间。这个时候让我们思考一下,如果我们需要比较代码在执行中的时候和代码执行开始的时间它们相差了多少秒?我们应该如何去比较?

如果函数每次都被执行一遍,那么函数执行开始的时间和函数当前执行中的时间将几乎没有差别。

这个时候我们的闭包起作用了,在throttle函数内部我们返回了一个函数,这个函数它引用了一个throttle函数里的变量,通过这个引用让js垃圾回收机制发现了 这个变量被引用,并且这个引用的函数绑定在了window的resize事件中,于是在throttle函数执行完回收销毁的时候垃圾回收机制会把被引用的变量保留下来.

这样每次resize的时候都会比较一次刚刚开始的时间和现在相差了多少秒,两个值相减得到结果超过了指定时间,func就再次被执行了,并且把这个执行中的时间给startTime一直循环,天荒地老~~!

好像说的有点绕!不管你懂不懂,反正我说完了 哈哈哈,开玩笑的, 这是深入理解js第一篇闭包函数,接下来我将寻找更加有趣的方式陆续编写js 类型引用,原型链,this指向这些让我们感到疑惑的东西。

顺便给大家推荐一个方法
window.requestAnimationFrame 改方法比截流性能更好,详情自行百度

总结

以上是生活随笔为你收集整理的简单理解js闭包、类型引用....第一章的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。