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闭包、类型引用....第一章相关推荐

  1. 《深入理解计算机系统》读书札记(第一章)

    <深入理解计算机系统>读书札记(第一章) 原书网盘链接地址:https://pan.baidu.com/s/1kF1Q9TloZzzgXewv7atWBw 提取码:gtt1 第一章 计算机 ...

  2. javascript深入理解js闭包[转]

    一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量 ...

  3. javascript深入理解js闭包

    一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量 ...

  4. [javascript] 深入理解js闭包

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域 ...

  5. javascript深入理解js闭包(摘自网络)

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域 ...

  6. 深入理解 C 指针阅读笔记 -- 第一章

    上周末,我在图书馆看到了这本很薄的书 -- <深入理解 C 指针>       这本书中写的内容,个人感觉适合一个初学者,内容不是很难.我也读了下,对每一章都做了笔记,笔记都是用代码的形式 ...

  7. 【深入理解计算机系统-学习笔记】第一章 计算机系统漫游

    第一章 计算机系统漫游 简介: 我们通过跟踪hello程序的生命周期来开始对系统的学习--从它被程序员创建开始,到在系统上运行,输出简单的消息,然后终止 我们将沿着这个程序的生命周期,简单得介绍一些逐 ...

  8. 深入理解JS闭包(一看就会)

    前言 JS闭包,对于每一个前端而言都是一个绕不开的概念.本人学习之初,因为闭包这个概念而花费了大量的时间以及精力去理解这个概念.所以在这里,我打算写一篇文章来分享一下本人的学习心得以及我眼中的闭包. ...

  9. 深入理解计算机系统第四版_《深入理解计算机系统》读书笔记 —— 第一章 计算机系统漫游...

    本书第一章沿着一个程序的生命周期,简要地介绍一些逐步出现的关键概念.专业术语和组成部分. 一.信息就是位+上下文 在计算机系统中所有的信息都由一串比特来表示. 一串相同的比特(或者几个相同的字节)可以 ...

最新文章

  1. ICCV 2019 论文解读:用图神经网络改善视频的多标签分类
  2. '_NamespacePath' object has no attribute 'sort'
  3. oracle 监控 视图,【转】oracle几个常用的监控视图
  4. hdu2066一个人的旅行(多源点多汇点的最短路径问题)
  5. Day7 python高级特性-- 切片 Slice
  6. WARNING: inbound connection timed out (ORA-3136)
  7. unity中移动lindrender和transform, 两个点的位置
  8. c语言的编译器vs2019的安装及简单实用
  9. 《老路用得上的商学课16—20》消费心理学(一)
  10. 谷歌搜索引擎API使用
  11. vue、dom、监听扫码枪 输入框与全屏获取扫码输入的结果 及 非扫码输入的结果 单输入框 多状态接口查询
  12. 微信小程序014租房-房屋租赁合同系统
  13. 爬取《悲伤逆流成河》猫眼信息 | 郭敬明五年电影最动人之作
  14. 手机PDF文件转换成图片教程来了,PDF转换器推荐
  15. Java Pair类的使用
  16. var 、let 和 const 的区别
  17. 数据结构PTA 基础实验5-2.2 电话聊天狂人
  18. 太太太长了,不行,我受不鸟了
  19. 基于stm32f407vet开发板的人脸识别
  20. 剑网三重置版服务器维护,12.29日剑网三重制版更新公告

热门文章

  1. linux卸载minicom,ubuntu下minicom超级终端的使用方法
  2. 判断用户是否存在再进行新增_4招教你判断抖音真假粉,快速分辨抖音号的真实度!...
  3. 7种从头开始免费学习编程的方法
  4. Java异常处理及异常机制介绍
  5. Linux快速复制T级数据或删除大量小文件
  6. 产品经理_(pm)—原型设计软件_Axure 9_axure rp pro 9.0中文破解版安装
  7. linux基本网络IP自动、手动配置
  8. easyui js解析字符串_easyui的解析器Parser
  9. latex 1图加标题_学习|Latex排版
  10. 牛客java面试题总结版(四)