JavaScript简介
JavaScript是网页三大组成部分中的核心之一,是前端开发的灵魂。JavaScript也是一种计算机语言.
# JavaScript定义
JavaScript是一种高级的、解释型的语言,是一门基于原型、头等函数的语言,是一门多范式的语言,支持面向对象程序设计,指令式编程,以及函数式编程。
# JavaScript的组成
ECMAScript是JavaScript的标准,描述了该语言的语法和基本对象。JavaScript是ECMAScript的语言层面的实现,除了语言规范之外,JavaScript还需要对页面和浏览器进行各种操作;除了基本实现之外,还包裹DOM操做和BOM操作
JavaScipt由ECMAScript(定义语言规范),DOM(用于操作文档的API),BOM(用于操作浏览器的API) 组成。
# JavaScript由谁运行
不同的浏览器由不同的内核组成
- Gecko:早期被Netscape和Mozilla Firefox浏览器浏览器使用
- Trident:微软开发,被IE4~IE11浏览器使用,但是Edge浏览器已经转向Blink
- Webkit:苹果基于KHTML开发、开源的,用于Safari,Google Chrome之前也在使用
- Blink:是Webkit的一个分支,Google开发,目前应用于Google Chrome、Edge、Opera等
- ...
我们经常说的浏览器内核指的是浏览器的排版引擎;排版引擎也称为浏览器引擎、页面渲染引擎或样版引擎。
JavaScript是由JavaScript引擎来执行的。
# JavaScript引擎
# 为什么需要JavaScript引擎
高级的编程语言都是需要转成最终的机器指令来执行的;事实上我们编写的JavaScript代码无论交给浏览器还是Node执行,最终都是需要被CPU执行的;但是CPU只认识自己的指令集,实际上是只有机器语言才能被CPU执行;所以我们需要JavaScript引擎帮助我们将JavaScript代码翻译成CPU指令来执行
# 常见的JavaScript引擎
- SpiderMonkey:第一款JavaScript引擎,由Brendan Eich开发(也就是JavaScript作者);
- Chakra:微软开发,用于IE浏览器
- JavaScriptCore:WebKit中的JavaScript引擎,Apple公司开发;
- V8:Google开发的强大JavaScript引擎,也帮助Chrome从众多浏览器中脱颖而出;
- ...
# 浏览器内核与JS引擎的关系
# 以Webkit为例,WebKit事实上由两部分组成
- WebCore:负责解析HTML、布局、渲染等等相关的工作
- JavaScriptCore:解析、执行JavaScript代码
# 小程序中的划分
在小程序中编写的JavaScript代码就是被JSCore执行的
# 著名的Atwood定律
Stack Overflow的创立者之一的 Jeff Atwood 在2007年提出了著名的 Atwood定律:
Any application that can be written in JavaScript, will eventually be written in JavaScript.
(任何可以使用JavaScript来实现的应用都最终都会使用JavaScript实现)