第 1章JavaScript概述
本章学习目标
?了解 JavaScript语言的历史背景。
?了解 JavaScript语言的特点及组成。
?通过“Hallo, World!”示例简单认识 JavaScript的运行机制。
本章先向读者介绍 JavaScript的历史以及其语言特点,让读者对 JavaScript语言整体有初步的了解和认识,讲述 JavaScript代码的写法,并通过一段简单的代码示例初窥 JavaScript编程的门径。
1.1 JavaScript简介
1.1.1 JavaScript的历史
JavaScript作为程序员“行走江湖”不可或缺的一门“武功”,一定有它不同于其他语言的特点,这就要从这门语言的起源说起。它昀早是由 Netscape公司开发,用来处理一些简单的表单验证的脚本语言。在没有 JavaScript的年代,一些简单的表单验证(如常见的密码复杂度验证)都是由服务端负责的,而且当时的网络速度是非常慢的,这种验证方式会导致网站的响应速度变得特别慢,于是便有了这门语言的诞生。当然它的作用**不仅仅是处理表单验证,它主要是用来使一些简单的逻辑可以在浏览器中实现而不需要去请求服务端的响应,负责使网页能和浏览器进行交互。
后来 Java语言火爆起来, Netscape也把原本叫做 LiveScript的语言改名为 JavaScript。其实从语言的角度,两者几乎没有什么关系。因为首先作为一种脚本语言,它本质上就与 Java不同,而且虽然 Netscape公司希望做出来的语言看起来能和 Java相似,但是这门语言的设计师 Brendan Eich却完全没把这个要求当回事,他的设计思路是:
(1)借鉴 C语言的基本语法。 (2)借鉴 Java语言的数据类型和内存管理。 (3)借鉴 Scheme语言,将函数提升到“**等公民”(first class)的地位。 (4)借鉴 Self语言,使用基于原型( prototype)的继承机制。
因此 JavaScript和 Java**的联系就是借鉴了 Java的数据类型和内存��理机制。随后微软发布了 IE 3.0浏览器并开发了一个名叫 JScript的脚本语言,实质就是一个能够在 IE 3.0上运行的 JavaScript。这两种语言虽然类似,但是标准不尽相同,这就害苦了很多 Web开发人员。昀后欧洲计算机制造商协会(European Computer Manufactures Association,ECMA) 采用了 ECMAScript作为标准定义这种语言,现在的 ECMAScript每年更新一个版本,如本
书编写的时候正是 2018年,而 ECMAScript 2019已经在起草了。
当然, Windows平台仍然有对 JavaScript的支持,并能通过 WSH环境直接运行。我们
偶尔意外双击了 .js文件,会发现它运行了并弹窗报错,是因为 JavaScript和我们现在一般
使用的 JavaScript的语法并不兼容,同时两者各自自带的对象亦不相同。
近些年和 JavaScript有关的一门比较流行的语言叫做 TypeScript,它是 ECMAScript的
超集,且是一种强类型语言,相较于 JavaScript更适合开发大型程序,受到多种主流前端框
架的青睐。 TypeScript需要使用 Babel等编译工具编译为 .js文件后才能够在浏览器中使用。 1.1.2 JavaScript的特点
JavaScript是一种动态类型、弱类型、基于原型的解释型脚本语言。
(1)动态类型:它的变量在声明时不需要声明类型,而是在运行时根据被赋值类型进行转换。 (2)弱类型:在计算时可以根据环境的变换自动转换变量类型。 (3)基于原型:没有面向对象语言中的类和实例的区别,只有对象这一概念,新的对象通过构造器函数继承原型对象,实例化后具有原型对象的属性以及本身定义的属性。 (4)解释型脚本语言:它的解释器被称为 JavaScript引擎,前端的 JavaScript的运行环境通常是在浏览器中,因此这个引擎也是浏览器的一个重要组成部分。 JavaScript的主要功能与它在被创立之初的目的是相同的,能够使页面与浏览器进行交互从而控制 HTML
(HyperText Mark-up Language)元素实现一些动态效果。 JavaScript代码可以直接嵌入到 HTML代码中,也可以单独写在文件中被 HTML页面调用。通常为了使代码结构更加清晰也方便分离一些功能模块,往往采用后一种做法。 1.1.3 JavaScript的组成
JavaScript的组成介绍如下。
(1)ECMAScript是 JavaScript的核心部分,它规定了 JavaScript的语法、类型、语句、关键字、保留字、运算符和对象。 (2)DOM(Document Object Model)通过把整个页面映射成一个树结构的文档,提供了一套可以访问 HTML和 XML(eXtensible Markup Language)节点的 API(Application Programming Interface),***可以利用它轻松地删除、添加、替换或修改任何节点。 (3)BOM(Browser Object Model)提供了访问浏览器窗口的方法,***可以控制浏览器窗口进行一些诸如移动窗口之类的操作。 BOM部分的有关定义,零散分布在各种标准中,主要位于 HTML标准。其他比如 WebRTC标准等内也定义了一些接口。
现在的 HTML、CSS、JS都走向了标准化,对浏览器的许多接口都有大量的标准文档进行了详尽的定义, DOM和 BOM只是其中的一部分,但是也是主要用到的部分。当然,如果要跟上时代的话,还是需要多了解各种新特性, W3C 专门建立了面向中国大众的 Chinese Web兴趣小组进行有关推广,有兴趣的读者可以了解一下。