第 28 章 JavaScript

JavaScript 是一种脚本语言,所谓脚本实际上就是一段嵌入到其他文档中的程序,用来完成特定的功能。JavaScript 脚本经常用来检验浏览器,相应用户动作、验证表单数据及实现动态特效等。在网站中,JavaScript 扮演的角色逐渐增多,正在蚕食着原本由 Flash 所占据的领地,如新闻幻灯片、焦点图、事件时间线、新闻地图等等。在 Web 标准中,行为层的实现目前是以 JavaScript 脚本为主,可以这样说,JavaScript 是事实上的浏览器端脚本。

JavaScript 语言正打算在更大的环境中使用,如浏览器,服务端脚本,以及类似环境中。

尽管 JavaScript 刚开始的设计初衷是作为给非程序人员的脚本语言,但其本质是一门编程语言。

28.1 JavaScript 简介

28.1.1 JavaScript 的特点

JavaScript 是一门可以运行在浏览器端的脚本语言。它与浏览器的结合使它成为世界上最为流行的编程语言之一,但它不是所谓的主流编程语言,在对这门语言没有太多了解,甚至对编程都没有什么了解的情况下,用户也能用它解决工作中的一些问题。

JavaScript 是事件驱动的语言。当用户在网页中进行某种操作时,就产生了一个“事件”。事件几乎可以是任何事情:单击一个网页元素、鼠标的移动等等均可视为事件。JavaScript 是事件驱动的,当事件发生时,它可以对之作出响应。具体如何响应某个时间由编写的事件响应处理程序完成。

JavaScript 是一种基于对象的语言,基于对象的语言含有面向对象语言的编程思想,但比面向对象语言更简单。它本身已包含一些创建完成的对象,通常情况下都是使用这些已创建好的对象。

JavaScript 是一种容易学习和掌握的编程语言。与其他编程语言相比,JavaScript 学习难度较低,学习资源丰富,由于 JavaScript 大多数情景都是在浏览器端使用,因此,用户可以通过查看源代码来学习,很多网站将所使用的 JavaScript 脚本都是开放的,可以下载学习并使用。

Javascript 是一种跨平台的脚本语言。JavaScript 的运行依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持 javascript 的浏览器就可正确执行。

28.1.2 JavaScript 的用途

JavaScript 可以完成以下任务:

  1. JavaScript 为 HTML 提供了一种程序工具,弥补了 HTML 语言在功能上的局限。HTML 只是一种标记语言,它的作用是将网页的内容通过标记组织起来,JavaScript 为其提供了实现动态交互和输出的一种途径,它可以很好地结合 HTML 标记语言实现复杂的应用。
  2. JavaScript 可以为 HTML 页面动态添加内容。用户可以传递数据至 JavaScript 脚本,再由 JavaScript 修改 HTML 内容。
  3. JavaScript 能响应一定的事件。当某些事件发生时,如键入内容、鼠标滑过、页面装载完毕等等,JavaScript 都可以根据事件作出响应。
  4. JavaScript 可以动态地获取和改变 HTML 的元素属性和 CSS 属性,从而动态地创建内容和改变内容的显示。
  5. JavaScript 可以检验数据,这在验证表单时候特别有用,在用户提交数据之前就可以保证数据的正确性,既能减轻服务器压力,又能使用户有更好的体验。
  6. JavaScript 可以检验用户的浏览器,从而为用户提供更好的页面显示效果。
  7. JavaScript 可以创建和读取 Cookie,根据保留在 cookie 中的数据,调整页面内容,提供更加个性化的服务。

尽管 JavaScript 能够完成很多复杂的应用,但由于浏览器安全性的考虑,JavaScript 有一些固有的限制,这些限制包括:

  1. JavaScript 不允许读写客户端文件。唯一的例外是,JavaScript 可以读写 Cookie 文件,但是也有一些限制。这样限制能避免恶意程序传播病毒木马、窃取用户信息。
  2. JavaScript 不允许写服务器端文件。尽管网页中有大量数据需要从服务器端读取和写入,如用户提交的投票信息、新闻评论、点击量等等,但是 JavaScript 不允许向服务器写入文件,通常都是利用服务器端脚本,如 PHP、ASP 程序来完成服务器文件的操作。
  3. JavaScript 不能从读取已经打开的其它窗口的信息,因此,JavaScript 无法知晓浏览当前网页的用户还在访问哪些其它站点。
  4. JavaScript 不能操纵不是由它打开的窗口,这是为了避免一个站点关闭其他任何站点的窗口,从而独占浏览器,强制用户接受信息。
  5. JavaScript 调整浏览器窗口的大小和位置时,不能将窗口设置的很小或者移出屏幕之外。

28.2 JavaScript 开发环境

进行 JavaScript 的开发,需要开发人员具备以下环境:

  1. 文本编辑器 JavaScript 脚本是纯文本文件,因此,开发人员可选择自己熟悉的文本编辑器,推荐使用 Sublime Text 编辑器。
  2. 浏览器 由于 JavaScript 是网页内容的一部分,要预览脚本的运行效果,自然少不了浏览器,根据项目的不同,开发人员应该选择合适的浏览器,一般而言,至少需要 IE、Firefox 浏览器。

28.3 Javascript 语言的发展趋势

JavaScript 语言的设计目的,已经不再局限于浏览器脚本领域,而是向全栈开发前进,因此该语言在未来的前景可谓灿烂,为摆脱早期的设计缺陷, JavaScript 语言推出“严格模式”特性。

严格模式对正常的 JavaScript 语义做了一些更改。

  • 首先,严格模式消除了一些 JavaScript 的静默错误,通过改变它们来抛出错误。
  • 其次,严格的模式修复了 JavaScript 引擎难以执行优化的错误:有时候,严格模式代码可以比非严格模式的相同的代码运行得更快。
  • 第三,严格模式禁用了在 ECMAScript 的未来版本中可能会定义的一些语法。

严格模式代码和非严格模式代码可以共存,但强烈建议初学者一开始就遵守严格模式。开启严格模式很简单,在所有语句之前放一个特定语句 "use strict";(或 'use strict';)即可。

Mozilla 官方建议,最好还是按一个个函数去开启严格模式(至少在学习的过渡期要这样做),您可以将整个脚本的内容用一个函数包括起来,然后在这个函数中使用严格模式。

28.4 JavaScript 学习资源

尽管网络上有丰富的学习资源,但其良莠不齐,因此学习者应该有权威准确、更新及时的参考手册,推荐以下学习资源:

  1. https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
  2. 《精通 JavaScript》
  3. 《JavaScript DOM 编程艺术》
  4. 《JavaScript 高级程序设计》
  5. 《JavaScript 语言精粹》
  6. 《你不知道的 JavaScript》
  7. 《JavaScript 设计模式》
  8. 《JavaScript 权威指南》
  9. JavaScript 知识在线测试