JavaScript的前世今生

一.写在前面


大家好,我是一溪风月一名前端菜鸟,梦想成为一名优秀的程序员,众所周知在现代的Web开发中,已经离不开JavaScript了,但是你是否知道,它曾经并不优秀,JavaScript非常简单上手只需要几分钟,同时它也很难,精通它需要很多年,并且随着ECMAScript的不断发展,想要掌握JavaScript已经变的非常不容易,但是在前端领域JavaScript的地位无可代替,并且它也是前端高阶运用的前提,这是JavaScript系列的开篇,希望能从0到1的带你入门和精通JavaScript,后续内容请持续关注JavaScript专栏,转载请注明作者,如果觉得有帮助请不要吝啬你美妙的赞哦~

二.JavaScript起源


在1994年的时候,网景公司(Netscape)发布了Navigator浏览器0.9版本,这是历史上第一个比较成熟的网络浏览器,轰动一时,但是这个版本的浏览器只能用来浏览静态的页面,不具备与访问者互动交互的能力,网景公司急需一种网页脚本语言,使的浏览器可以与网页互动。

网景公司当时想要选择一种语言来嵌入到浏览器中,采用现有的语言,比如 Perl Python Tcl Scheme等等,允许他们直接嵌入网页,基于此种需求和战略,1995年网景公司招募了程序员Brendan Eich,希望将Scheme语言作为网页脚本语言的可能性。

但是就在此时,发生了另外一件大事,1995年Sun公司将oak语言改名为Java,正式推向市场,Java推出之后立马在市场上引起轰动,Java当初有一个口号write one run anywhere网景公司动了心,决定和Sun公司结成联盟,希望将Java嵌入网页种来运行,Brendan Eich本人非常热衷于Scheme,但是管理层那么时候有点倾向于Java,希望可以简化Java来适应网页脚本的需求。

如果不是接下来的事情,可能现在前端开发就需要使用Java,但是Brendan Eich对此并不感兴趣,它用10天时间设计出来了JavaScript,最初这门语言叫做Mocha(摩卡)在Navigator 2.0 beta版本更名为LiveScript,在Navigator 2.0 beta3 版本正式重命名为JavaScript,当时为了给这门语言搭上Java这个热词。

当然10天设计出来语言足以证明Brendan Eich是天才,但是这门语言当时更像是一个大杂烩,它借鉴了如下语言。


  1. 借鉴c语言的基本语法
  2. 借鉴Java语言的数据类型和内存管理。
  3. 借鉴Scheme语言,将函数提升到了第一等公民的地位。
  4. 借鉴了self语言,使用基于原型的继承机制。

Brendan Eich 曾经这样描述JavaScript,与其说我爱JavaScript,不如说我恨它,他是C语言和self语言一夜情的产物,他的优秀之处并非原创,它的原创之处并不优秀,但是并不要因此对JavaScript失望,目前经历了这么多年的发展,随着ECMA的标准化,JavaScript本身的缺点已经被弥补了,已经变得非常的健壮。

微软公司于1995年首次推出Internet Explorer,从而引发了与Netscape的浏览器大战。微软对Navigator解释器进行了逆向工程,创建了JScript,以与处于领导地位的网景产品同台竞争,这对于开发者来说是一场噩耗,因为需要针对不同的浏览器进行不同的适配。

1996年11月,网景正式向ECMA(欧洲计算机制造商协会)提交语言标准,1997年6月,ECMA以JavaScript语言为基础制定了ECMAScript标准规范ECMA-262, ECMA-262是一份标准,定义了ECMAScript,JavaScript成为了ECMAScript最著名的实现之一,除此之外,ActionScript和JScript也都是ECMAScript规范的实现语言,所以说ECMAScript是一种规范,而JavaScript是这种规范的一种实现。

三.JavaScript的组成


ECMAScript是JavaScript的标准,描述了该语言的语法和基本对象,JavaScript是ECMAScript的语言层面的实现,因为除了语言规范之外,JavaScript还需要对页面和浏览器进行各种操作,除了基本实现之外,还包括DOM操作和BOM操作。

四.JavaScript由谁来运行?


我们经常会说,不同的浏览器有不同的内核组成,其实我们所说的内核是指的渲染引擎。

  1. Gecko:早期被Netscape和Mozilla Firefox浏览器浏览器使用。
  2. Trident:微软开发,被IE4~IE11浏览器使用,但是Edge浏览器已经转向Blink。
  3. Webkit:苹果基于KHTML开发、开源的,用于Safari,Google Chrome之前也在使用。
  4. Blink:是Webkit的一个分支,Google开发,目前应用于Google Chrome、Edge等。

为什么我们需要JavaScript引擎,因为高级语言需要转化成机器指令来运行,事实上我们编写的JavaScript无论你交给浏览器或者Node执行,最终都需要CPU执行的,但是CPU只认识自己的指令集,实际上是机器语言才能够被CPU所执行,所以我们需要JavaScript引擎帮助我们将JavaScript代码翻译成CPU指令来执行,那么常见的JS引擎有哪些?


  1. SpiderMonkey:第一款JavaScript引擎,由Brendan Eich开发(也就是JavaScript作者)。
  2. Chakra:微软开发,用于IT浏览器。
  3. JavaScriptCore:WebKit中的JavaScript引|擎,Apple公司开发中。
  4. V8: Google开发的强大JavaScript引擎,也帮助Chrome从众多浏览器中脱颖而出。

五.浏览器内核和JS引擎的关系


比如我们以Webkit内核为例,Webkit内核实际上是由两部分组成的。

  1. WebCore:负责HTML解析和布局,渲染相关的功能。
  2. JavaScriptCore:解析执行JavaScript代码。

六.著名的Atwood定律


Stack Overflow的创立者之一的 Jeff Atwood 在2007年提出了著名的 Atwood定律:任何可以使用JavaScript来实现的应用都最终都会使用JavaScript实现。

JavaScript目前应用越来越广泛了,目前主要应用的方向为以下几个方向。

七.总结


这篇文章我们了解了前端中最重要的内容中的最后一环JavaScript,我们首先了解了JavaScript的发展历史,从JavaScript的诞生到,JavaScript的规范化一整个历程,之后我们从JavaScript自身,从宏观列举了JavaScript的组成,包含三个部分,分别是ECMAScript,DOM,BOM,之后我们简单的介绍了内核和JS引擎的关系,这也就解释了为什么Node和浏览器都可以执行JavaScript,最后分享了著名的Atwood定律,随着时代的发展,JS的应用领域越来越广,几乎你可以想到的JS都可以做,如果你想成为一个比较全能的开发人员,那么JS一定是你的首选。

相关推荐
云边小卖铺.几秒前
运行vue项目报错 errors and 0 warnings potentially fixable with the `--fix` option.
前端·javascript·vue.js
我是若尘2 分钟前
前端处理大量并发请求的实用技巧
前端
Lstmxx4 分钟前
Electron:使用数据流的形式加载本地视频
前端·electron·node.js
JunjunZ11 分钟前
unibest框架开发uniapp项目:兼容小程序问题
前端·vue.js
lyc23333313 分钟前
鸿蒙Next应用启动框架AppStartup:流程管理与性能优化🚀
前端
Data_Adventure13 分钟前
Vue 3 作用域插槽:原理剖析与高级应用
前端·vue.js
curdcv_po21 分钟前
报错 /bin/sh: .../scrcpy-server: cannot execute binary file
前端
小公主22 分钟前
用原生 JavaScript 写了一个电影搜索网站,体验拉满🔥
前端·javascript·css
代码小学僧22 分钟前
通俗易懂:给前端开发者的 Docker 入门指南
前端·docker·容器
Moment25 分钟前
为什么我在 NextJs 项目中使用 cookie 存储 token 而不是使用 localstorage
前端·javascript·react.js