通俗易懂JavaScript作用域(三)
来源:互联网 发布:2017网络流行歌曲歌名 编辑:程序博客网 时间:2024/05/17 20:22
上述两篇博客主要带大家分析了两个有点迷糊的Demo,但是关于作用链的知识还是没有出现,下面我们再来做一个变形。
变形二
<span style="font-family:SimSun;font-size:18px;"><script> var a = 1; function fn1() { alert(a); a = 2; alert(a); } fn1(); </script></span>
代码分析
这个例子只不过是上篇博客中例子的一部分,但是涉及到了作用链的东东。下面再来分析一下。
1.JS预解析
就不多废话了,直接出结果
2.解读代码
在解读过程中,当遇到函数调用时,我们知道又将开始上述过程:JS预解析——代码执行,解析结果是:
我们发现跟上图并并没有区别,那么开始执行吧!
当执行fn1()函数中的alert(a)时,此时有趣的事情发生了,作用链机制就出现了,通过上图发现,fn1()函数块的圈子里面并没有有关a的定义,那么该怎么办呢?
此时,就会通过作用链机制,向上一级查找,直到找到为止。效果图如下:
所以我们发现执行fn1()中的alert(a)时,通过作用链,找到外围圈子中的a,输出结果来。
接着向下执行,当执行fn1()中的第二个alert(a)时,由于在此圈子中已经为a赋值为2,所以紧接着会输出结果2.
这就是所谓的作用链机制,再查找变量的时候,会自底向上,一层一层的查找,直到找到为止。
0 0
- 通俗易懂JavaScript作用域(三)
- 通俗易懂JavaScript作用域(一)
- 通俗易懂JavaScript作用域(二)
- Javascript笔记《三》之作用域
- 数据库三范式(六范式)--通俗易懂
- 数据库三大范式详解(通俗易懂)
- 数据库三大范式详解(通俗易懂)
- 数据库的三大范式(通俗易懂)
- 序列化与反序列化中serialVersionUID的作用(通俗易懂)
- 通俗易懂数据库三范式
- 《javascript高级程序设计》读书笔记(三)变量、作用域和内存问题
- JavaScript基础学习笔记(三)——变量、作用域、内存
- 理解JavaScript面向对象(三):作用域链及原型
- JavaScript学习笔记三——作用域
- JavaScript学习(三) 变量 作用域和内存
- 变量作用域(JavaScript)
- JavaScript作用域(二)
- JavaScript作用域(一)
- wegweg
- Android中自动跳转到系统设置界面
- CABasicAnimation fillMode和removedOnCompletion
- 关于SQL的不等于表示
- 恩布企业 IM 安卓端 1.2,服务端 1.10 发布
- 通俗易懂JavaScript作用域(三)
- memcached源码分析-----item锁级别与item引用计数
- jquery获取多种input值的方法
- 创建pfx数字证书
- php取文件后缀名(扩展名)
- ImageView之tint属性
- Java EE HTML5 WebSocket 示例
- keytool用法及说明
- Clone Graph (Java)