打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
javascript的“闭包”
 
闭包实质:就是变量的解析的过程
来看一个简单的例子:
 
 
运行结果很简单,一个打印wellcome to me.一个打印nihao。
在分析之前理解几句话:
1、技术角度,每个function都是一个闭包,因为他们总能访问在它外部定义的数据;
2、JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里;
3、子对象会一级一级地向上寻找所有父对象的变量。所以父对象的所有变量,对于子对象是可见的,反之不成立。
分析过程如下:
对于函数wellto(),定义wellto的时候会产生一个作用域链对象,为了表示方便,记作scopechain。scopechain是个有顺序的集合对象。
  • scopechain的第一个对象:为了方便表示记作sc1, sc1有若干属性,引用本函数的参数和局部变量,如sc1.hi ;
  • scopechain的第二个对象:为了方便表示记作sc2,sc2有若干属性,引用外层函数的参数和局部变量,如sc2.hell;
  • ...
  • scopechain的最后一个对象:为了方便表示记作scn,scn引用的全局的执行环境对象,也就是window对象!,如scn.openl();

这里之所以可以弹出nihao,原因就是变量解析时在wellto函数作用域链的第一个对象上找不到hello属性,然后就去第二个对象上找去了(结果还真找到了)。


 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
了解JavaScript的执行上下文 -- JavaScript -- IT技术大学习 -- 共学习 共进步!
Javascript深层原理探讨【3】
javascript深入理解js闭包
理解Javascript之执行上下文(Execution Context)
JavaScript作用域
总结|JavaScript知识点整理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服