首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS进阶 执行上下文和作用域链

一,执行上下文

js代码执行时,会为当前代码创建相应的执行环境

1,执行上下文:可以理解为当前代码的运行环境

2,执行上下文栈:按照函数的调用顺序来管理执行上下文,栈底永远是全局上下文,栈顶是当前正在执行的函数 特点:先进先出

注意:函数执行时即函数调用才会创建执行上下文

4,每一个执行上下文都有一个与之关联的变量对象和一个作用于链

 二,变量对象

变量对象主要是用来存储被定义在上下文中的变量和函数声明

1,变量对象创建过程

--建立arguments对象

--检查当前上下文的函数声明

--检查当前上下文的变量声明

2,js代码的执行分为两个部分

--代码编译阶段:将代码翻译成可执行代码 预编译:声明提升

--代码执行阶段

重点:声明提升

声明提升:将所有的变量声明和函数声明提升到最前面,记得是函数声明,函数表达式是不会声明提升的。

规则:

1)函数声明整体提前

2)变量声明提前,赋值留在原地

3)函数会首先被提升,然后才是变量

4)函数声明有冲突,会覆盖,变量声明有冲突,会忽略

三,作用域链

作用域:指定变量与函数的可访问范围

1,作用域类型:

--全局作用域:无法访问到局部作用域中的变量

--函数作用域:局部作用域只在当前的函数内部中使用

--块作用域:{}中的语句集,ES5没有块作用域,ES6添加了块作用域

2,[[scope]]属性 :虚拟属性,无法访问和修改,函数创建时生成的属性,保存着这个函数的所有父级执行上下文环境中的变量对象的集合

3,作用域链=自己本身的变量对象+[[scpoe]]

4,变量函数的访问规则:

--沿着作用域链从里向外查找

--查找会在找到第一个匹配的标识符时停止

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200820A06W5G00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券