
1.1 JavaScript简介
JavaScript(JS)是基于对象和事件驱动的客户端脚本语言,主要是用来进行Web前端开发的,如图1-1所示的可以查看某个日期星期几的日历,图1-2所示的查看某个日期距离2025年1月1日多长时间的倒计牌,图1-3所示的弹球小游戏等,都是典型的使用JavaScript开发的网页特效。

图1-1 日历

图1-2 倒计牌
微课1-1 JavaScript简介
什么是Web前端开发?可以通过常见的项目开发基本框架图来了解,如图1-4所示。

图1-3 弹球小游戏

图1-4 项目架构示意图
如图1-4所示,项目开发基本框架一般分为三层。第一层是Web前端页面开发,这个页面是用HTML、CSS和JavaScript开发的,其中HTML+CSS实现了前端页面的结构和样式, JavaScript程序代码实现动态交互、网页特效等功能部分,这一层也就是常说的Web前端开发;中间一层是Web后台开发,也叫服务器端的程序开发,主要是进行业务处理;最后一层就是数据库了。在Web前端开发中,把纯粹的HTML+CSS开发的页面称为静态页面,这个页面是死的,没有用户交互功能,也没有什么特效,用户体验度低,要解决这个问题就需要用JavaScript来处理,这也是本书主要学习的内容。
1.1.1 JavaScript的发展概况和特点
JavaScript是怎么来的?它的特点是什么?要解决这些问题,要先了解一下JavaScript的发展历史。
1.JavaScript的历史
(1)JavaScript语言诞生
最早的JavaScript语言思想是从嵌入式语言来的,大概在1992年,有一家叫Nombas的公司开发出了嵌入式脚本语言C--(C-minus-minus,Cmm),后来改名为Script Ease。这种将脚本嵌入到网页中的设计方法也就成为JavaScript诞生的理论基础。在1995年,网景(Netscape)公司的布兰登(Brendan Eich)为解决类似于“向服务器提交数据之前验证”的问题。Netscape Navigator 2.0与Sun公司合作开发的一个脚本语言,最开始的时候叫Live Script。为了营销的便利,借助于当时如日中天的Java,将其更名为JavaScript,JavaScript1.0版本就这样诞生了。
(2)JavaScript标准的制定
JavaScript诞生后,成功地进行了推广,刺激了微软,所以微软也决定向浏览器进军,并发布了一个JavaScript克隆版,叫JScript,搭载到IE浏览器。微软进来以后,加上后来CEnvi的Script Ease,就有三种不同的JavaScript版本。所以这个时候就需要一个统一的标准来进行语法和特性的统一,JavaScript标准的制定就提上了日程。
在1997年,JavaScript 1.1作为一个草案提交给欧洲计算机制造商协会(ECMA)。当时第39技术委员会(TC39)承担了制定一个标准化语法和语义的“通用、跨平台、中立于厂商”的脚本语言。TC39集合了来自Netscape、Sun、微软、Borland和其他一些对脚本编程感兴趣的公司的程序员,其同制定了ECMA-262标准。该标准的出生,诞生了ECMAScript这种全新脚本语言,但是习惯上,大家还是将这种语言叫作JavaScript。
(3)JavaScript的应用推广
JavaScript的ECMA标准化推出后,各个公司都参照JavaScript的标准进行了浏览器引擎的修改,以适应ECMA的标准。网景公司虽然是最早推出JavaScript的,但是整整晚了一年才推出“完全遵循ECMA规范”的JavaScript,而微软早在一年前就推出了“完全遵循ECMA规范”的IE4.0,让微软取得了优先,这样就直接导致一个恶果:微软的JScript成为JavaScript语言的事实标准。
后来,国际标准化组织及国际电工委员会(ISO/IEC)也采纳ECMAScript作为标准(ISO/IEC-16262)。各Web浏览器也分别努力将ECMAScript作为JavaScript实现的基础。
由于网景的慢节奏,在JavaScript推广中,促成了微软的JScript成为JavaScript语言的事实标准,加上Windows绑定着IE浏览器,几乎占据全部市场份额。所以,1999年之后,所有的网页都是基于JScript来开发的。而网景在微软强大攻势下,于1998年全面溃败。但微软也没有一支独大,同年成立的Mozilla项目中的Firefox(火狐浏览器)在支持JavaScript方面无可比拟,在后来的时间里一步步蚕食IE的市场,成为全球第二大浏览器。另一个同微软构成竞争的是谷歌(Google Chrome),又称Google浏览器,是一个由Google(谷歌)公司开发的开放原始码网页浏览器。它以简洁的页面、极速的浏览,一举成为全球第三大浏览器。随着移动互联网的普及,嵌有Android系统的平板电脑和智能手机,抢占了大块的市场份额。后来苹果也成为浏览器的竞争者,苹果开发出了Safari浏览器,作为苹果公司各种产品的默认浏览器,在苹果的一体机(i Mac)、笔记本(Mac)、MP4(i Pod)、i Phone(智能手机)、i Pad (平板电脑)都运行着Safari浏览器,随着苹果的产品不断的发展,Safari浏览器也分得了浏览器的大量份额。
从以上JavaScript的分析我们可以得知,JavaScript是一门独立的脚本语言,虽然与Java语言名字相似,但二者没有一点关系,只是借了一下“名字”而已。
2.JavaScript的特点
(1)解释型语言:JavaScript是一种解释型语言,其源代码不需要编译就可以通过浏览器解释运行。在编写代码时,它可以和HTML代码结合在一起来解释执行。
(2)基于对象的语言:JavaScript是一种基于对象的语言,在运行时,可以运用对象的属性和方法来实现各种功能,这个特点使JavaScript变得很强大。它可以使用内置对象,也可以使用自定义对象来实现比较复杂的功能。
(3)数据安全性:JavaScript是一种安全的语言,它不允许访问本地的硬盘,也不能将数据存在网络服务器,不允许对网络文档进行修改和删除,只能通过浏览器进行进行信息浏览和动态的交互,防止数据的丢失。
(4)跨平台性:JavaScript在运行时,只依赖于浏览器,与操作环境无关,只要有支持JavaScript的浏览器就可以正确地运行,对操作平台无要求。
就因为有了以上四大基本特点,JavaScript在软件开发,特别是Web前端开发受到越来越多的关注,其应用范围也就越来越广。
1.1.2 JavaScript的应用
JavaScript语言具体可以应用到以下几个方面。
1.验证用户输入的内容
JavaScript语言可以实现在客户端对用户输入的数据进行验证,如在注册时,提示用户名的格式是否符合要求,设置密码时两次设置是否相同等。
2.实现页面的特效文字
使用JavaScript语言可以实现页面文字的多种效果,如旋转、翻滚等。
3.实现页面的动画效果
在浏览页面时,我们会发现一些类似下雨、下雪的动画效果,这些效果使页面更加生动,这些动画效果也可以通过JavaScript来实现。
4.实现窗口浮动的广告
浏览页面时经常发现一些浮动的广告窗口,这些浮动的广告窗口也可以通过JavaScript来实现。除此之外,JavaScript还广泛的应用在其他很多方面,例如JavaScript虽然是客户端脚本语言,但是也可以来开发服务器端的应用,现在比较时兴的HTML5 APP也是HTML5结合了JavaScript来开发的。
1.1.3 支持JavaScript的浏览器
众所周知,JavaScript最初开发出来就是为了嵌套在浏览器中使用的,浏览器对JavaScript支持也是JavaScript代码能够正常解析运行的基础,那么,支持JavaScript浏览器有哪些呢?其实现在市场上主流的浏览器都支持JavaScript,如图1-5所示的几款浏览器,都对JavaScript有很好的支持。

图1-5 支持JavaScript的浏览器