JavaScript入门(一):概念和发展历史
JavaScript 是世界上最流行的脚本语言。作为 Web 开发者,学习 JavaScript 是我们必须经历的一个环节,这个系列是作者在入门 JavaScript 中学习记下的一些笔记,作为以后复习的参考。
首先,学习 JavaScript 之前,我们来聊聊它的前世今生。
一、什么是 JavaScript
概念:JavaScript 是一门客户端脚本语言,也是世界上最流行的脚本语言,因为你在电脑、手机、平板上浏览的所有的网页,以及无数基于 HTML5 的手机App,交互逻辑都是由 JavaScript 驱动的。
简单来说,JavaScript 是一种运行在浏览器中的解释型的编程语言。
- 客户端:直接运行在客户端浏览器中,每一个浏览器都有 JavaScript 的解析引擎。
- 脚本语言:代码写好之后不需要编译,可以直接通过浏览器解析引擎解析执行。
功能:
- 用来增强用户和 HTML 页面的交互过程,控制 HTML 元素,实现页面的一些动态效果
在浏览器的发展中,JavaScript 是唯一一种能跨平台、跨浏览器驱动网页,与用户交互的语言。作为和 Web 打交道的我们,JavaScript 是我们必须掌握的一门语言。
二、JavaScript 的历史
1.令人捉急网速带来的问题
上世纪90年代,互联网发展的才刚刚起步,网络的传输速度非常的缓慢,人们再网络上进行交流产生的延迟也是巨大的。
以当时最火的 bbs 论坛为例,用户在使用 bbs 之前必须注册账号。很明显在注册账号时要检查账号的合法性,比如账号中是否有特殊字符,空白…..等,而当时的浏览器并不具备任何逻辑能力,所有的逻辑判断都需要服务器要帮助完成。
在当时令人捉急的网速条件下,每次浏览器与服务器交互花费大量的时间,这样大大降低了用户的体验。
这时有人就想,能不能做出一门浏览器专用的语言,可以对用户的输入内容进行校验,这样就可以大大减少出错的次数,提高用户体验感。
2. 三个客户端脚本语言的分足鼎立
1992年,Nombase 公司,开发出了第一门客户端脚本语言,专门用于浏览器内表单内容的校验。并命名为 C–,想蹭一下当时热门语言 C++ 的热度,但是没有流行起来,后来又命名为 ScriptEase 逐步发展。
虽然这门语言没有如愿发展,但是其提出的在浏览器客户端对表单校验的设计思想被一家公司发现其具有强大的潜力。这家公司就是 **网景(Netscape)**。
在当时,网景公司凭借其 Navigator 浏览器的大热成为互联网的第一代浏览器霸主。
1995年,网景公司按照 C– 的设计思想开发了一门客户端脚本语言,支持更多的功能,并将其命名为:LiveScript。但是为了不像 C– 一样过的那么惨,而当时 SUN 公司开发的 Java 语言出世,为了乘上 Java 发展的东风,于是将 LiveScript 改名为现在我们见到的 JavaScript ,而我们现在来看,这个命名是多么的明智。
但是注意:很多人会误以为 JavaScript 和 Java 有很大的关系,其实不然,除了一些语法上的近似,它们俩基本没啥关系。
1996年,微软公司推出了自己的浏览器 IE,为了让自己的浏览器更有竞争力且不和网景公司产生命名专利纠纷,它们抄袭 JavaScript 也推出了客户端脚本语言并将其命名为 JScript,并将其内置在IE浏览器中 ,而事实上 JScript和 JavaScript 基本上没有多大差别,后来 IE 也成功如愿大卖。
但是这样对开发者来说就非常不友好,它们开发 Web 时需要考虑多种客户端脚本语言,极大的降低了开发效率。
而虽然看起来巨硬 (MicroSoft) 抄袭的行径非常的不地道,但是 JSript 的出现也成功搅乱了JavaScript的发展,也突出了其设计的一个缺陷:没有一个标准的语法或特性。为了 JavaScript 语言发展的良性,标准化的工作势在必行。
3. ECMA 标准化的指定
为了解决这个问题,ECMA(European Computer Manufacturers Association)欧洲计算机制造协会 和几个公司基于 JavaScript1.1 版本的草案定制了浏览器脚本语言的标准,且将其命名为 ECMAScript。
于是,简单来说,ECMAScript 是一种脚本语言标准,而 JavaScript 是网景公司对这个标准的一个实现。
由于其余的两种浏览器脚本语言现在已经不再提起,只有 JavaScript 活到了现在,所以在大多数时候,如果你遇到 ECMAScript 这个词,我们可以简单把它替换为 JavaScript 也行。
4. 现代的 JavaScript
现代的 JavaScript 语言组成基本有以下三部分:
JavaScript = ECMAScript(标准&&核心) + DOM(文档对象模型) + BOM(浏览器对象模型)
其中 BOM,DOM 部分具有 JavaScript 独有的一些特性。所以严格来说, JavaScript 并不等于 ECMAScript。请大家注意这个点。