文章阅读
Posted chenxj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文章阅读相关的知识,希望对你有一定的参考价值。
js闭包其实不难,你需要的只是了解何时使用它
究竟什么是闭包?闭包在什么场景下使用?写前端程序需要用到闭包吗?我用jQuery也能写的好好滴呀?闭包可以解决哪些问题?使用闭包会带来哪些好处?
闭包是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。
包含两方面:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域)
既然所有函数都是闭包,还有必要专门提这个概念吗?大多数函数被调用时(invoked),使用的作用域和他们被定义时(defined)使用的作用域是同一个作用域,这种情况下,闭包神马的,无关紧要。但是,当他们被invoked的时候,使用的作用域不同于他们定义时使用的作用域的时候,闭包就会变的非常有趣,并且开始有了很多的使用场景,这就是你之所以要掌握闭包的原因。
理解“闭包”:
- step1:掌握嵌套函数的词法作用域规则(lexical scoping rules)。只要记住一点:词法作用域的规则,即函数被执行时(executed)使用的作用域链(scope chain)是 被定义 时的scope chain,而不是执行时的scope chain,就可以很容易的理解闭包的行为了。
- step 2:掌握闭包的使用场景。
- 闭包经典使用场景一:通过循环给页面上多个dom节点绑定事件
- 闭包使用场景二:封装变量
- 闭包使用场景三:延续局部变量的寿命
以上是关于文章阅读的主要内容,如果未能解决你的问题,请参考以下文章