JS执行上下文与变量对象
来源:互联网 发布:萨尔浒之战 知乎 编辑:程序博客网 时间:2024/05/21 09:45
###从执行上下文环境说起
在JavaScript中,平时不可避免的需要我们声明变量和函数,那么在JS解析器中如何这些变量进行操作的了,一切还得从执行下上文中说起。当我们调用一个函数时,一个新的执行上下文就会被创建,而执行上下文的周期可以分成两个阶段:创建阶段、执行阶段
这里不对建立作用域链和确定this指向展开说,下面主要写变量对象
变量对象(Variable Object)
变量对象的创建过程如下:
- 建立arguments对象
- 检查当前上下文的函数声明(function关键字声明创建的属性)
- 检查var变量声明的创建属性
依据上面的规则可以知道function声明比var声明优先级要高一些,下面举一个例子
function test(){ console.log(foo); //hello console.log(bar); //undefine var foo = 'Hello'; console.log(foo); //Hello var bar = function(){ return 'world'; } function foo(){ return 'hello'; }}test();
这里我们可以依据执行上下文的阶段来将变量对象分为创建阶段和执行阶段:
//创建阶段VOVO = { arguments:{...}, foo:<foo reference>, //表示foo的地址引用 bar:undefined //var bar;}//执行阶段AO = { arguments;{...}, foo:'Hello', bar:<bar reference>}
在执行阶段,变量对象(VO)转换为了活动对象(AO),里面的属性都可以访问,然后开始执行阶段的操作.
0 0
- JS执行上下文与变量对象
- JavaScript 执行上下文和变量对象
- js执行上下文补充 变量对象 (看汤姆大叔博客所记)
- JS概念理解(三)——执行上下文、作用域与自由变量
- 执行上下文中的变量对象和活动对象
- 执行上下文、变量对象、作用域链、this
- 弄清楚作用域、执行上下文、变量对象、作用域链
- JavaScript上下文执行对象
- 【JS】执行上下文(ExcecutionContext)
- js执行上下文
- js ES3执行上下文
- js 执行上下文环境
- JS - 执行上下文栈
- js执行上下文
- js 中的执行上下文
- Js 执行上下文
- js的执行上下文
- js学习笔记:执行上下文与作用域
- 《TCP/IP详解卷一:协议》学习笔记六
- 【算法题之路】从尾到头打印链表
- 使用lite-server快速搭建本地服务器
- JAVA求学之路第十八天(各种流&&Proterpties)
- 注释转换器
- JS执行上下文与变量对象
- 日期和时间的格式化定义(ISO C89)
- selenium 拦截网站数据,爬虫处理js
- java-数组初始化
- 虚拟机性能监控与故障处理工具の2个可视化工具
- 损失函数、风险函数、经验风险最小化、结构风险最小化
- zookeeper环境搭建中的几个坑[Error contacting service. It is probably not running]的分析及解决
- 170413 汇编-防溢出除法和数值转字符型的子程序
- eclipse启动报错Fail to create the java Virtual Machine