函数作用域与执行上下文

1、代码分类:全局代码和函数(局部代码)

  代码分为编译(由JS编译器执行)阶段和执行(JS引擎执行)阶段。当代码被编译时,会创建相应的作用域,当代码被执行时,会创建相应的执行

  上下文。

2、作用域:是在编译阶段就产生的,一整套函数标识符的访问规则,由函数声明时所在的位置决定。

  作用:主要用于隔离变量,不同的作用域中变量名字可以相同

  作用域链:多个上下级关系作用域形成的链,由下向上或由内向外。定义了变量的查找规则

3、执行上下文:

  1)全局执行上下文:执行全局代码前将window确定为全局执行上下文,对全局数据进行预处理。

    -var声明的变量,添加为window属性

    -function声明的数,添加为window方法

    -this赋值为window

    -开始执行全局代码

  2)函数执行上下文:在调用函数,执行函数体之前,创建对应的函数执行上下文,对局部数据进行预处理

    -实参赋值给形参,添加为执行上下文的属性

    -argument赋值实参,添加为函数执行上下文属性

    -var声明的变量。赋值underfined,添加为函数执行上下文属性

    -function声明的函数,添加为执行上下文的方法

    -this->赋值调用当前函数的对象

    -开始执行函数体

  函数执行上下文栈:

    -在全局代码执行前, JS引擎就会创建一个栈来存储管理所有的执行上下文对象

    -在全局执行上下文(window)确定后, 将其添加到栈中(压栈)

    -在函数执行上下文创建后, 将其添加到栈中(压栈)

    -在当前函数执行完后,将栈顶的对象移除(出栈)

    -当所有的代码执行完后, 栈中只剩下window  

转载于:https://www.cnblogs.com/qqinhappyhappy/p/11612524.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值