js的闭包使用详解

这次给大家带来js的闭包使用详解,js闭包使用的注意事项有哪些,下面就是实战案例,一起来看一下。

闭包

按中文的意思就是关上一个包的意思。如果我们把函数的作用域当做是一个包的话,那这个词很形象体现了它的作用 。函数的正常的执行流程是当函数中的语句执行完后,程序会自动销毁这个函数的作用域,但是当一个函数中声明了另一个函数,并且这个子函数执行时存在引用父函数的变量,就会形成闭包,形象点说就相当于把父函数的作用域给关闭了起来,不让程序去销毁它。

例如:

function a() {  var name = "xuxu";  function b() {    console.log(name);  }  // 此处产生闭包   b();} a();

登录后复制

当函数可以记住并访问它所在的作用域链时,就产生了闭包 当然,大部分的闭包都不是这么直观的,因为子函数的调用是可以在父函数之外的,例如:

function a() {  var name = "xuxu";  function b() {    console.log(name);  }  return b;} var c=a();// 此处产生闭包 此处的c函数其实就是a函数c();

登录后复制

通过以上代码,我们也可以看出一个闭包的好处,就是我们再全局作用域(此处是widow)下访问到了局部作用域(a函数)的作用域的值,按正常的词法作用域是无法这么做的,但是当我们使用闭包是就可以了。然后我们再看一点我们平时写的比较多的:

function foo() {  var a = 2;  function baz() {     // 2    console.log( a );   }  bar( baz );}function bar(fn) {// 大家快看呀,这就是闭包!  fn(); }

登录后复制

又或者

var fn;function foo() {  var a = 2;  function baz() {    console.log( a );  }  // 将baz分配给全局变量  fn = baz; }function bar() {   // 大家快看呀,这就是闭包!  fn();}foo();// 2bar();

登录后复制

以上也是闭包,因此在函数内部调用子函数,或者通过何种手段将内部函数传递到所在的词法作用域以外,它都会持有对原始定义作用域的引用,无论在何处执行这个函数都会使用闭包。

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

js的作用域与预解析使用详解

Vue枚举类型实现HTML

node+express实现聊天室

观察者模式改变页面金额数的

以上就是js的闭包使用详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2779542.html

(0)
上一篇 2025年3月8日 15:48:48
下一篇 2025年3月8日 15:48:53

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Express与Koa2的使用详解

    这次给大家带来Express与Koa2的使用详解,Express与Koa2使用的注意事项有哪些,下面就是实战案例,一起来看一下。 知会上看到有个问题 《Express会被Koa2取代吗?》 。刚好对Express、koa有点小研究,于是简单…

    编程技术 2025年3月8日
    200
  • JS实现音乐播放器界面

    这次给大家带来JS实现音乐播放器界面,JS实现音乐播放器界面的注意事项有哪些,下面就是实战案例,一起来看一下。 本文介绍了vue一个页面实现音乐播放器的示例,分享给大家,具体如下: 效果如下: 项目地址:https://github.com…

    2025年3月8日
    200
  • JS的命令模式概念与用法分析

    这次给大家带来JS的命令模式概念与用法分析,使用JS命令模式概念与用法分析的注意事项有哪些,下面就是实战案例,一起来看一下。 这篇文章主要介绍了JS设计模式之命令模式概念与用法,简单描述了命令模式的原理、功能并结合javascript实例形…

    2025年3月8日
    200
  • fullpage.js的滚屏方式

    这次给大家带来fullpage.js的滚屏方式,实现fullpage.js的滚屏注意事项有哪些,下面就是实战案例,一起来看一下。 这两天公司网页改版用到fullpage.js这个滚屏插件,页面内容整屏的滚动,不成问题,各种设置在网上也都有文…

    2025年3月8日
    200
  • 用AngularJS在前端界面获取密码

    这次给大家带来用AngularJS在前端界面获取密码,用AngularJS在前端界面获取密码的注意事项有哪些,下面就是实战案例,一起来看一下。 本文实例讲述了AngularJS实时获取并显示密码的方法。分享给大家供大家参考,具体如下: 1、…

    2025年3月8日
    200
  • JS获取select下拉框中第一顺位元素内的值

    这次给大家带来JS获取select下拉框中第一顺位元素内的值,JS获取select下拉框中第一顺位元素内值的注意事项有哪些,下面就是实战案例,一起来看一下。 本文实例讲述了JavaScript实现获取select下拉框中第一个值的方法。分享…

    2025年3月8日
    200
  • Egg.js里如何获取HTTP参数

    这次给大家带来,的注意事项有哪些,下面就是实战案例,一起来看一下。 这次给大家带来Egg.js里如何获取HTTP参数,Egg.js里获取HTTP参数的注意事项有哪些,下面就是实战案例,一起来看一下。 在Egg.js框架中,由于 Contro…

    编程技术 2025年3月8日
    200
  • js实现读取xml文件内容

    这次给大家带来js实现读取xml文件内容,主要以代码的形式体现,下面就是实战案例,一起来看一下。 其中html代码如下所示 W3School.com.cn Internal NoteTo: From: Message: if (window…

    2025年3月8日
    200
  • 关于js可视距离的方法总结

    这次给大家总结关于js可视距离的知识点,下面就是具体内容,一起跟随小编来看一下吧。 JQuery监听页面滚动总结 1、当前滚动的地方的窗口顶端到整个页面顶端的距离:   var winPos = $(window).scrollTop();…

    编程技术 2025年3月8日
    200
  • JavaScript之call和apply

    要想深入的去学习JavaScript语言,有一个很重要的知识点,就是对“call()”和“apply()”的理解,有时候我们在看别人、或者是一些开源框架的源代码的时候,也是大量出现这两个方法,那这两个方法是干嘛的,到底有什么作用?本文主要内…

    2025年3月8日 编程技术
    200

发表回复

登录后才能评论