做为一名前端开发,天天都会花大量的时间去编写 JavaScript 代码。可是你真的知道 JavaScript 是如何执行的吗?javascript
比起那些编译过程只有三个步骤的语言的编译器,JavaScript就要复杂得多。前端
好比咱们执行程序java
var a = 2;
console.log(a);
复制代码
在执行这两行命令的过程当中不只仅只有引擎参与,其实也有不少其余的小伙伴参与了。微信
编译器markdown
负责语法分析及代码生成。函数
做用域性能
负责收集并维护由全部声明的标识符组成的一系列查询,而且实施一套很是严格的规则等等。优化
引擎ui
一直参与整个JavaScript程序的编译及执行过程。spa
举个例子
function getName(Name) {
console.log(Name, age);
}
var name = 'Andy';
var age = 22;
getName(name);
复制代码
上面的代码看起来是否是很是简单,只是简单的去声明了一个函数,两个基本类型参数,而后调用了一下这个函数。可是实际上在执行这几行代码过程当中既有编译器的参与也有做用域的限制以及引擎的执行。
其实在执行咱们的第三部分的时候,咱们会引入一个 'LHS' 和 'RHS' 的概念。
LHS 的含义是赋值操做的左侧,RHS的含义是赋值操做的右侧。可是这样可能很差理解,因此我我的认为你能够这样去理解,LHS就是对变量进行修改赋值操做,RHS就是拿到变量。
咱们仍是拿上面的代码例子来说解一下 LHS 和 RHS
在上面的例子中,LHS 操做一共有三处(= 'Andy'、= 2二、对形参赋值); RHS 就比较多了,有var name 、var age、 getName() 、(name)、console 、log、Name 、age;
一门语言每每博大精深,咱们不能只知足于使用它来完成任务,更要去了解清楚计算机每一步作了什么。一直怀着一颗好奇的心,那么技术确定会愈来愈好。
PS:你们看了后以为对本身有帮助能够三连留言,欢迎提出宝贵意见,也欢迎各位对相关技术有兴趣的开发者(由团队开发人员微信号x118422邀请)入群,在线解答讨论数据可视化、优化图表性能等方面的技术问题~