码迷,mamicode.com
首页 > 其他好文 > 详细

函数作用域与执行上下文

时间:2019-09-30 15:02:15      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:上下级   规则   调用函数   赋值   fun   多个   管理所   执行   代码   

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

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

  上下文。

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

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

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

3、执行上下文:

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

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

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

    -this赋值为window

    -开始执行全局代码

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

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

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

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

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

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

    -开始执行函数体

  函数执行上下文栈:

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

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

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

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

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

函数作用域与执行上下文

标签:上下级   规则   调用函数   赋值   fun   多个   管理所   执行   代码   

原文地址:https://www.cnblogs.com/qqinhappyhappy/p/11612524.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!