js闭包(一)

1、闭包来源

由于javascript语言特有的“链式作用域”结构,子对象会一级一级向上寻找父对象的变量。

2、闭包的理解

闭包就是能够读取其它函数内部变量的函数,因为函数内的子函数才能读取父函数的局部变量,因此可以把闭包理解成“定义在一个函数内部的函数”(通常我们所见的是父函数内部的子函数访问了父函数的变量,并且子函数被返回到父函数作用域之外)

3、用闭包解决点击li弹出对应的index

image.png

对于上述方式输出i将会是 2,2, 2,因为js使用采用var定义变量时不存在块级作用域的概念,同时onclick事件采用的是回调方式触发,当触发onclick事件时i已经全为2。下面我们采用闭包方式解决

image.png

1.第一种采用定义闭包函数a();console.log(i)中的i是引用了是外部的变量i,使得变量i被保存住,点击会弹出0,1,2
2.同理定义的自执行函数也是保留了对i的引用,使其保存在内存中。

注: 同时提供以下三种方式解决此类依次弹出序号问题


image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ● 闭包基础 ● 闭包作用 ● 闭包经典例子 ● 闭包应用 ● 闭包缺点 ● 参考资料 1、闭包基础 作用域和作...
    lzyuan阅读 4,536评论 0 0
  • 闭包: 官方”的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该...
    小裁缝sun阅读 3,856评论 0 5
  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zock阅读 4,704评论 2 6
  • 如果你是一家传统出版机构的老总,面对波涛汹涌的互联网浪潮和不生不死的传统图书生态会作何感想?是不是也会蠢蠢欲动,准...
    0f5fbe338d53阅读 1,702评论 0 1

友情链接更多精彩内容