JavaScript初步理解

简介: JavaScript初步理解

今天看了一篇较为基础的文章,做个简要的总结,把文章内容进行提炼,再加上一些自己的理解。

JavaScript 是怎么运行起来的? (qq.com)

解释型语言和编译型语言

JavaScript 是一种解释型的编程语言,我们可能也听过编译型语言,那两种语言的区别是什么?

首先,我们常说的C++.java.Python 以及JavaScript都属于高级语言,但是计算机唯一可以识别的语言只有机器语言,也就是0和1.所以要把我们认识的代码转成计算机可以识别的语言有两种方式:解释和编译。下图是两种方式的对比。

总结:


编译型“一次编译,无限次运行”。编译器来编译,系统执行。(闭源,常见 C、C ++、Go。);


解释型“一次编写,到处运行”,解释器解释并执行。(开源,要不然运行不了啊,常见的PHP、Ruby、Python 和 JavaScript)


我自己的理解:


编译型就好比我们学校有个翻译机器(编译器),一次性翻译了一篇外国文献,你看的时候非常快(执行效率高),但是完成整个翻译的时候需要花费时间,翻译完成之后(二进制代码)对这个平台(学校)有一定的依赖性。


解释型就好比一个翻译,你说一句,现场给你翻译一句,所以运行时比编译型语言慢很多。


随着即时编译(JIT采用两种方式混合使用)的发展,逐渐缩小两者的差距,V8采用的就是这种技术。(热点代码)

JavaScript 代码的执行过程

字节码(byte code)是一种包含执行程序、由一序列 OP代码(操作码)/数据对 组成的二进制文件。字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。相比机器码,字节码不仅占用内存少,而且生成字节码的时间很快,提升了启动速度。

JavaScript引擎(解释器)

JavaScript引擎是执行JavaScript代码的计算机程序。主流浏览器都内置了JavaScript引擎。所有JavaScript引擎都包含一个调用栈和一个堆。


JavaScript是一种单线程编程语言,浏览器内核中只有一个 JavaScript 引擎线程。原因是作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作 DOM(文档对象模型 将 web 页面与脚本或编程语言连接起来),如果是多线程会带来很复杂的同步问题。


总结:


通过学习,对解释型语言和编译型语言有了总体的了解,又接着 JavaScript深入了解了解释型语言的具体执行过程。其实最后我还有些疑问,比如JavaScript代码的执行过程中最后的编译器和编译方式中的编译器一样吗?解释型语言解释和执行不是都由解释器来做吗,问题先放在着,等着后续的深入学习再来解答吧。

相关文章
|
8月前
|
JavaScript 前端开发
70.【JavaScript 6.0】(一)
70.【JavaScript 6.0】
32 0
|
6月前
|
JavaScript 前端开发
javascript01
javascript01
37 0
|
8月前
|
JavaScript 前端开发 Java
70.【JavaScript 6.0】(三)
70.【JavaScript 6.0】
32 0
|
10月前
|
JavaScript 前端开发
初学JavaScript
JavaScript
48 0
|
12月前
|
JavaScript 前端开发 Java
09.初识javascript
09.初识javascript
44 0
|
存储 JavaScript 前端开发
【初识JavaScript-03】
【初识JavaScript-03】
72 0
【初识JavaScript-03】
|
JavaScript 前端开发
JavaScript中的this
JavaScript中的this自制脑图
54 0
JavaScript中的this
|
JavaScript 前端开发
Day10 JavaScript
JavaScript
134 0
|
JSON JavaScript 前端开发
你不知道的JavaScript丛书总结(二)
你不知道的JavaScript丛书总结(二)

相关实验场景

更多