初识JavaScript
JavaScrip是解释性语言
什么是解释性语言?
就是不需要在运行前编译,在运行程序的时候才翻译,专门的解释器负责在每个语句执行的时候解释程序代码。
那么什么是编译性语言?
是在在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了
那么解释性语言与编译性语言的区别在哪儿?
编译性语言
先通篇翻译,全部读完后翻译然后生成一个编译好后的编译文件,再执行这个编译好的文件
- 优点:执行速度快
- 不足:移植性不好(所谓的不跨平台)
解释性语言
读一行翻译一行,一遍翻译一边执行,不会生成文件
- 优点:跨平台
- 不足:相对而言慢一点
注:
java既不是编译性语言,也不是解释性语言,java是一种oak的面向对象语言
JavaScript是单线程的
为什么JavaScript是单线程?
JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊。
- 这个要回到Js历史了,布兰登·艾奇(Brendan
Eich)老哥用10天创造js。当时js用来干嘛,简单的浏览器交互,验证,操作一下DOM是吧。那把它设计成那么复杂干什么,而且如果多线程的话,操作DOM会出现麻烦的事情,假设一个线程读取DOM节点数据的同时,另一个线程把那个DOM节点删了,呵呵。所以JS一个线程就够了,也就是一步一步顺序运行下来。- JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?
为了利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完
全受主线程控制,且不得操作DOM。所以,这个新标准并没有改变JavaScript单线程的本质。
JavaScript的组成(三大部分)
- ECMAScript
- DOM
- BOM