js中注册标识符流程

注册分为三个阶段:分别是注册阶段,函数处理阶段,变量处理阶段这三个阶段有先后顺序的。(注:这三个阶段的名字没有权威性,是作者为了方便记忆自己起的名字)

注册阶段的特征

1.此时不会运行代码

2.检查低级的语法错误

3.注册在当前词法环境中所声明的变量和函数

4.一旦创建了新的词法环境,就会执行这一阶段

函数处理阶段

如果是函数环境(也就是说局部环境):创建形参及函数参数的默认值;然后实参形参相统一。 如果全局环境,就跳过这这一步

接下来是全局环境和函数环境都经历的:将函数声明进行扫描并绑定到当前环境与函数名相同的标识符上。若该标识符已经存在,那么该标识符的值将被重写。(注意此时不会理会函数表达式和箭头函数)

对变量进行处理

若在全局作用域中或者函数作用域中。扫描三种变量 var 、let、const定义的变量。

若是块级作用域:扫描两种变量 let、const定义的变量。对于所查找到的变量,若该标识符不存在,进行注册并将其初始化为undefined。若该标识符已经存在,将保留其值。

 

转载于:https://www.cnblogs.com/weikemudan/p/11152041.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值