JavaScript的工作机理
来源:互联网 发布:好米是什么网络用语 编辑:程序博客网 时间:2024/04/28 22:05
要想了解JavaScript的工作机理,我推荐一本js的书:《你不知道的JavaScript》的上卷,里面介绍了学习js的一些难点和js的工作机理。
接下来是我的对JavaScript的工作机理中的运行机制的理解:
同时由一个例子来解释:var a=2的工作机制;
在此过程中需要三个事务来运行js的工作原理:引擎,编译器,作用域。
1:当开始遇到var a时,编译器首先先询问是否存在一个同名的变量存在于同一个作用域的集合里,如果木有,就会要求编译器在此作用域的集合里新建一个名为a的变量;否则编译器会忽略该声明,继续编译;
2:接下来编译器会为引擎生成运行时所需的代码,这些代码被用于处理a=2这个赋值操作,引擎运行时会询问作用域,在当前的作用域的集合里是否存在一个名为a的变量,如果有,引擎就会使用该变量,否则引擎就会继续寻找该变量。
3:找到a变量时,引擎就会将值2赋值给变量。
在引擎查找a变量时,可有两种查询的方式:LHS查询和RHS查询
如果查找的目的是对变量赋值,那就是LHS查询;如果查找的目的是获取变量的值,那就是RHS查询。
例子:
console.log(a);
其中对a的引用是一个RHS引用,因为这里a并没有赋值任何值。相应地,需要去查找并取得a的值,在将值传递给 console.log().
a=2;
这里对a的引用是一个LHS引用,因为实际上我们不关心当前的值是什么,只是要为=2这个赋值操作找到一个目标来执行赋值操作。
注意:编译器可以在代码生成的同时处理声明和值的定义。
最后来句总结性的话语:变量的赋值操作会执行两个操作,首先编译器会在当前的作用域中声明一个变量(如果变量之前木有声明过),然后在运行时引擎就会在作用域里查找该变量,如果找到就会执行赋值操作。
1 0
- JavaScript的工作机理
- JavaScript的面向对象机理
- C++的new和delete工作机理
- 浏览器缓存工作机理理解
- 浏览器缓存工作机理理解
- ThreadPoolExecutor使用+工作机理+生命周期
- vector的增长机理
- 拜普洛的作用机理
- 防盗链的机理
- 断舍离的机理
- SDRAM的机理
- php的运作机理
- 【Zigbee技术入门教程-02】一图读懂ZStack协议栈的基本架构和工作机理
- 一图读懂ZStack协议栈的基本架构和工作机理
- 浅谈malloc和free工作机理
- printf()函数的执行机理
- 强名称的作用机理
- boost的多线程实现机理
- 第八周—C语言 oj 上机题目(输出数字塔)
- qtableview 设置自动scroll但是不scorll
- 说说时间观与时间管理——北漂18年(71)
- 学习笔记 Tianmao 篇 recyclerView 的自定义使用
- ubuntu上简单操作(二)——安装vmtools
- JavaScript的工作机理
- hzjs颠覆jquery,按照中国人思维开发的最简洁的JQUERY替代品更简洁更高效
- 牛客网刷题之把数组排成最小的数
- Cisco VPN 无法启动,Error 56
- Zedboard--zynq开发和启动
- 看到的两句话
- ADO.NET学习摘记
- filter在配置文件中的前后位置是有影响的
- Qt 利用 Qwt 绘制动态曲线