js笔记之-作用域篇

js的编译过程

js的编译可以简化看做三部分

  1. 分词/词法分析: 将代码拆分为有意义的代码块,也称为词法单元
  2. 解析/语法分析:将词法单元的数组进行转为程序语法结构的树,也称为抽象语法树
  3. 代码生成:将生成的抽象语法树转换为计算机可以识别的机器语言进行执行

js的编译与执行关系

js是是动态执行的语言,与一般的编译语言不同之处是它不是提前编译的,任何的js代码在执行前都需要进行编译,且一般是在执行前的很短时间内才进行编译

初步理解js的编译与执行过程需要用到的元素

js的编译执行过程一般需要三个朋友

  1. 引擎: 一般在程序编译及执行的整个过程中负责
  2. 编译器:一般负责代码的词法分析以及代码生成的过程
  3. 作用域: 负责并收集并维护所有标识符组成的一系列查询规则,对各个变量的访问权限进行管理

js的编译过程及执行过程

根据 var a = 2; 进行示例分析
在编译过程中,编译器会碰到a的变量,先与作用域进行确认,查看当前作用域是否存在变量名为a的变量,如果存在,则忽略,如果不存在,则会创建一个变量a,
在生成代码的过程中的赋值操作,引擎会先查看是否有变量a,有的话就直接使用,没有就会继续向上一层作用域查找
变量的赋值操作一般会执行两个过程,一般编译器会先声明一个变量(如果没有声明过),然后在代码运行时引擎会在作用域中进行查找该变量,找到便会赋值

作用域

作用域是查找变量的一套规则,当一个作用域在另一个作用域中嵌套着时,就产生了作用域的嵌套,引擎一般情况下会在当前的作用域中进行查找,如果没有在当前的作用域中找到,就会一层一层向上一层进行查找,直到最外层的作用域(全局作用域)为止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值