JavaScript初步理解

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

JavaScript 是怎么运行起来的? (qq.com)https://mp.weixin.qq.com/s/VyHpI_AkCdv5OM9JjgeNyg

解释型语言和编译型语言

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代码的执行过程中最后的编译器和编译方式中的编译器一样吗?​解释型语言解释和执行不是都由解释器来做吗,问题先放在着,等着后续的深入学习再来解答吧。

评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值