版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、函数作用域:JS的在函数中定义的局部变量只对这个函数内部可见,称之谓函数作用域varv1=global;varf1=function()console.log(v1);f1(); global?varf2=function()varv1=local; f1();f2();global ?嵌套作用域变量搜索规则:当在函数中引用一个变量时,JS会搜索当前函数作用域,如果没有找到则搜索其上层作用域,一直到全局作用域。函数的作用域是由定义时决定的,而非调用时决定的。var v1 = global;var f = function()console.log(v1); var v1 = local; /l
2、ocal对于这两个规则的相互作用,函数内无论什么位置定义的局部变量,在进入函数时都是已经定义的,但未初始化,即为undefined,直到运行到变量被赋值时才被初始化,因此若访问了未初始化的变量,我们会得到undefined的说明。全局作用域: 全局作用域的变量是全局对象的属性,不论在什么函数中都可以直接访问,而不需要通过全局对象,但加上全局对象,可以提供搜索效率。以下变量属于全局作用域:在最外层定义的变量、全局对象的属性、任何地方隐匿定义的变量。实例单步分析:第一步,在加载程序时,已经确定了全局上下文环境,并随着程序的执行而对变量就行赋值。第二步,程序执行到第27行,调用fn(10),此时生成
3、此次调用fn函数时的上下文环境,压栈,并将此上下文环境设置为活动状态。第三步,执行到第23行时,调用bar(100),生成此次调用的上下文环境,压栈,并设置为活动状态。第四步,执行完第23行,bar(100)调用完成。则bar(100)上下文环境被销毁。接着执行第24行,调用bar(200),则又生成bar(200)的上下文环境,压栈,设置为活动状态。第五步,执行完第24行,则bar(200)调用结束,其上下文环境被销毁。此时会回到fn(10)上下文环境,变为活动状态。第六步,执行完第27行代码,fn(10)执行完成之后,fn(10)上下文环境被销毁,全局上下文环境又回到活动状态。闭包: 闭包
4、就是定义在一个函数内部的函数,能够读取其他函数内部变量的函数。闭包的用途:一是方便实现嵌套的回调函数,二是隐藏对象的细节。第一,函数作为返回值如上代码,bar函数作为返回值,赋值给f1变量。执行f1(15)时,用到了fn作用域下的max变量的值。第二,函数作为参数被传递如上代码中,fn函数作为一个参数被传递进入另一个函数,赋值给f参数。执行f(15)时,max变量的取值是10,而不是100。实例单步分析:第一步,代码执行前生成全局上下文环境,并在执行时对其中的变量进行赋值。此时全局上下文环境是活动状态。第二步,执行第17行代码时,调用fn(),产生fn()执行上下文环境,压栈,并设置为活动状态
5、。第三步,执行完第17行,fn()调用完成。按理说应该销毁掉fn()的执行上下文环境,但是这里不能这么做。注意,重点来了:因为执行fn()时,返回的是一个函数。函数的特别之处在于可以创建一个独立的作用域。而正巧合的是,返回的这个函数体中,还有一个自由变量max要引用fn作用域下的fn()上下文环境中的max。因此,这个max不能被销毁,销毁了之后bar函数中的max就找不到值了。因此,这里的fn()上下文环境不能被销毁,还依然存在与执行上下文栈中。即,执行到第18行时,全局上下文环境将变为活动状态,但是fn()上下文环境依然会在执行上下文栈中。另外,执行完第18行,全局上下文环境中的max被赋值为100。如下图:第四步,执行到第20行,执行f1(15),即执行bar(15),创建bar(15)上下文环境,并将其设置为活动状态。执行bar(15)时,max是自由变量,需要向创建bar函数的作用域中查找,找到了max的值为10。这里的重点就在于,创建bar函数是在执行f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年大学试题(社会学)-劳动科学历年参考题库含答案解析
- 神经外科疾病微创治疗案例
- 2026年大学试题(林学)-森林土壤学历年参考题库含答案解析
- 2026年天津现代职业技术学院高职单招笔试职业适应性测验历年参考题库含答案解析
- 2026年天津渤海职业技术学院高职单招笔试职业技能测验历年参考题库含答案解析
- 2026年大学试题(工学)-安全科学技术历年参考题库含答案解析
- 2026年大学试题(大学选修课)-工匠精神历年参考题库含答案解析
- 2026年四平职业大学高职单招笔试数学历年参考题库含答案解析
- 2026年大学试题(哲学)-普通逻辑历年参考题库含答案解析
- 骨关节疾病防治新概念
- 2025年海光信息物理实现笔试及答案
- 2026航天科工十院校园招聘(公共基础知识)综合能力测试题附答案解析
- 中国航天科工校招试题及答案
- 1.1公有制为主体多种所有制经济共同发展课件-2025-2026学年高中政治统编版必修二经 济与社会
- 健康活动:吃早餐的重要性
- 旅馆顾客财物管理制度
- 学校讲座论坛管理制度
- 顶管工作井专项施工方案
- 龙腾焦化厂化产车间岗位技术操作规程
- 农村土地承包合同书
- 洗胃技术操作流程及评分标准
评论
0/150
提交评论