• 函数在执行的过程中,先从自己内部找变量
  • 如果找不到,再从创建当前函数所在的作用域去找,以此往上
  • 注意找的是变量的当前状态

范例

例1

var a=1
function fn1() {
function fn2() {
console.log(a)
} function fn3() {
var a=4
fn2()
} var a=2
return fn3
} var fn=fn1()
fn() //输出多少
  • 执行过程分析

先执行 var a=1,var fn=fn1(),进入function fn1(),执行var a=2,return fn3,进入function fn3(),执行var a =4,fn2(),进入function fn2(),执行console.log(a),由于本作用域没有a,因此向上一级作用域寻找a,即var a=2,因此输出2。

 
例1 - 输出结果
 
例1 - debug

例2

var a=1
function fn1() {
function fn3() {
var a=4
fn2()
} var a=2
return fn3
} function fn2() {
console.log(a)
} var fn=fn1()
fn() //输出多少
  • 执行过程分析

执行var a=1,var fn=fn1(),进入function fn1(),执行var a=2,return fn3,执行function fn3(),执行var a=4,fn2(),执行function fn2(),执行console.log(a),此作用域没有a,所以向上一级作用域寻找a,即最外层的var a=1,因此输出结果1。

 
例2 - 输出结果
 
例2 - debug

例3

var a=1
function fn1() { function fn3() {
function fn2() {
console.log(a)
}
var a fn2()
a=4
}
var a=2
return fn3
}
var fn=fn1()
fn() //输出多少

先执行var a=1,var fn=fn1(),进入function fn1(),执行 var a=2 , return fn3,进入function fn3(),由于fn2()在var a=4之前,但var a会被前置,即等同于

var a
fn2()
a = 4

所以先执行var a,在执行fn2(),进入function fn2(),执行console.log(a),这个时候该作用域没有a,去上一层作用域找a,找到var a,但此时的a还没有赋值,因此输出undefined。

 
例3 - 输出结果
 
例3 - debug

最新文章

  1. PHP设计模式(三)抽象工厂模式(Abstract Factory For PHP)
  2. iOS开源项目周报1229
  3. Android Weekly Notes Issue #230
  4. C语言中的运算符
  5. LCIS(最长公共上升子序列)Vijos1264神秘的咒语
  6. TCP/IP协议栈概述
  7. 一些App的User-Agent
  8. C++ Bitsets
  9. fragment中获取activity中的控件
  10. MySql查看表信息
  11. Codeforces Round #271 (Div. 2) E题 Pillars(线段树维护DP)
  12. ch4-注册 登陆 实现 cookie使用
  13. SpringBoot简单打包部署(附工程)
  14. ios自动打包-fastlane 安装、使用、更新和卸载
  15. Windows Server 2012设置VMWare以服务方式启动(注销后也可以运行,开机也可以自动运行)
  16. SAP SD-销售模式-寄售(客户寄售)
  17. 基于腾讯云CentOS7.4+MySQL5.7+Python3+uwsgi+nginx的Django项目部署
  18. 互联网公司的面试官是如何360°无死角考察候选人的?[z]
  19. JavaScript获取键盘事件
  20. 对Promise的理解?

热门文章

  1. Spring MVC 框架
  2. 全渠道价值链整合云服务 B2B SOLOMO(组图)
  3. NAT和DHCP
  4. webuploader实现上传视频
  5. Oracle批量删除表格数据
  6. css:文章标题过长时,使用省略号
  7. JQuery制作网页——第八章 使用jQuery操作DOM
  8. 【Hive六】Hive调优小结
  9. Hive--关联表(join)
  10. 第一篇:百问网ubuntu安装注意事项和部分配置