学习JAVASCRIPT时我们在学什么?

2018-12-05  本文已影响13人  大赚佬

原文链接:http://icaoguo.com/archives/60

哈喽大家好,我是挂面。

今天要向大家介绍的是JavaScript和ECMAScript的发展轨迹,以此让各位入坑的前端朋友们对于常说的JavaScript和自己学习的方向有一个大概的认知。

如果您是一个老手,乃至大牛。完全可以当成历史小回顾或者一个笑话听听。

本视频的内容来源于:

JavaScript高级程序设计(第3版)

阮一峰翻译的ECMAScript标准

知乎各个问题

本来只是想照着高级程序设计简单的介绍一下由来,奈何故事太过精彩,光是思路关键点整理就写了700多字,查阅多方资料,整理成文,如果有说的不好的地方,烦请斧正。

故事要从1995年说起,那是人们上网海再用速度仅为28.8kbit/s的“猫”上网,打开个网页通常都是30秒往上,一旦涉及用户需要提交表单,体验就会变得非常的差,填写的格式不对或者不小心漏填,等上30多秒后给你弹一个错误,想想都带感。

于是在人民群众日益高涨的呼声之下,客户端验证表单的方法被提上了日程,最早实现这个想法的正是当时大名鼎鼎的网景公司(Netscape),网景领航者2着手开发的一款名为LiveScript的脚本语言;当时和Sun公司合作开发,为了蹭Java的热度,决定改名为JavaScript。

这个典故现在还有不少人拿来当笑话讲;

举个栗子:

Java和JavaScript有什么不同?

大概是雷锋和雷峰塔的区别? (并没有侮辱革命烈士的意思,如果有冒犯我预先道歉,并删除此文)

网景这个决定使得当时的领航者浏览器用户体验得到提升,软件的销量也水涨船高。

网景公司获得了大量的用户,使得微软也不得不请求与它合作,也不知什么原因,据说是微软派出的谈判人员态度不好,事情也就没谈拢。

于是微软把开发一款同样优秀的浏览器语言提上日程,在1996年,IE3.0落后于Netscape navigator3发布,凭借几乎完全的性能与免费的优势,开始抢夺用户市场。

看到这我不禁感叹历史总是惊人的相似,当年的邮箱用户争夺战,后来的360免费杀毒软件,无一不改变了互联网。

到了1997年,我们的另一个主角欧洲计算机制造商协会ECMA登场了,因为网景微软两家巨头的各自发展,JavaScript和JScript的差异越来越大,开发人员需要有部分工作精力用于解决两者的兼容性问题。

于是由ECMA指定39号技术委员会(TC39)负责“标准化一种通用、跨平台、供应商中立的脚本语言的语法和语义”,这个TC39是由Netscape、Sun、微软、Borland以及其他一些关注脚本语言发展的公司的程序员组成。

以Netscape的JavaScript1.1版本为蓝图,通过TC39几个月的努力完成了ECMA-262,定义了一种名为ECMAScript的新脚本语言的标准。

至此大家明白了JavaScript和ECMAScript两者的关系。

然而,搞笑的是。Netscape自己开发的JavaScript1.2与ECMAScript并不兼容!

从此之后,所有的浏览器厂家都跟着ECMAScript走,在理论上JavaScript终于有了一个标准化的定义。

然而事实总是荒诞的,直到上一个视频,我们在将事件委托时,里面还需要写兼容性代码。。。

这就要听我接着说了。

ECMAScript(以下简称ES)虽然提出了一个世界化的标准,但是具体实现还要考虑历史的进程,ES在被提出之后,还需要经过不断的修订和改进。从ES1、ES2、ES3到大家熟知的ES5、ES6(ES2016),再到现在每年已更新的ES2017、ES2018。可以说JS在ES标准的更新完善之后,也慢慢成长为一门强大的编程语言。

讲起来挺复杂,实际上网景与微软的上古之战只有短短的三年,从95年到98年,网景被收购,把Netscape开源,改名为Mozilla也就是现在的Firefox浏览器,Mozilla追求的是100%实现JavaScript。

在实际的开发过程中,我们并不是十分关心JavaScript在各大浏览器表现的差异,这要归功于ECMA标准的制定者们。而且我们日常谈论的JS比起ECMAScript其实有多得多的含义,主要是包含了宿主环境(浏览器的BOM browser object model)和文档对象模型(DOM document object model),学习JavaScript有很大一部分是对这些内容的操作。

俗称学习API。

如果你了解过NodeJS可以发现,在服务端的环境中,是不会有这两个对象的。(当然也可以通过一些nodejs的第三方模块解析文本从而模拟操作dom)

甚至adobe flash都可以运行

从这里可以看出,ES提供核心类型和语法,JavaScript其实是ES的一个超集实现。

至此我们回答了以下问题:

1、JavaScript从哪来?

2、什么是ECMAScript?

3、JavaScript是什么?

以及介绍了学习JavaScript我们在学习什么?

总结一下,前端开发者制作网页,需要编写html、css、JavaScript3种基础语言,使用JavaScript对于网页进行操作,例如移动或者添加删除页面中的元素,是对DOM对象的操作,例如我们最常用的document.getElementById()方法,就是获取文档对象模型当中一个指定ID的元素,如果我们需要打开一个新的窗口、前进、后退网页,则是对浏览器对象模型(BOM browser object model)的操作,例如我们常用的window.location.href=”http://icaoguo.com”;

希望这篇文章能够帮到大家对JavaScript这门语言有多一点点的认识,谢谢大家。

上一篇下一篇

猜你喜欢

热点阅读