什么是JavaScript
JavaScript于1995年面世,它是在Netscape Navigator浏览器中向网页添加程序的一种方式。所有其他主要的图形Web浏览器都已采用了此语言。它使现代Web应用程序成为可能——你可以直接与这种应用程序交互,而不必为每个动作重新加载页面。JavaScript也用于更传统的网站,以提供各种形式的交互性和智能。
值得注意的是,JavaScript与名为Java的编程语言几乎无关。采用相似名称是出自营销考虑,而不是合理的判断。当JavaScript出现时,Java语言正在大规模推广并且越来越受欢迎。有人认为尝试搭乘这一成功语言的顺风车是一个好主意。现在我们已经无法摆脱这个名字了。
JavaScript语言在Netscape之外得到采用之后,人们编写了一个标准文档来描述它的工作方式,以便声称支持JavaScript的各种软件实际上都在讨论同一种语言。这被称为ECMAScript标准,得名于标准化它的ECMA国际组织。在实践中,ECMAScript和JavaScript这两个术语可以互换使用,它们是同一种语言的两个名称。
有人会说JavaScript有许多糟糕之处。其中很多都是确实存在的。当我第一次被要求用JavaScript编写程序时,我很快就开始鄙视它了。它几乎可以接受我输入的任何代码,但它解释这个代码的方式却与我的原意完全不同。这与我当时没有弄清楚“我在做什么”有很大关系,但这里有一个真正的问题:JavaScript在它允许的内容上过于自由。这种设计背后的初衷是,它将使初学者更容易使用JavaScript进行编程。实际上,因为系统不会向你指出问题,所以更难以在程序中发现问题。
不过,这种灵活性也有其优点。它为许多技术留下了空间,这些技术在更严格的语言中是不可能实现的,正如你将看到的(例如在第10章中),它的灵活性可以用来克服一些JavaScript的缺点。在正确学习JavaScript语言并花一段时间使用它后,我真的变得喜欢它了。
JavaScript有好几个版本。ECMAScript第3版是JavaScript在2000年到2010年逐渐占据主导地位时得到广泛支持的版本。在此期间,ECMA正在雄心勃勃地开发第4版,此版本计划对该语言进行一些彻底的改进和扩展。以这种激进的方式改变一种活生生的、广泛使用的语言,在现实中非常困难,所以ECMA在2008年放弃开发第4版,这导致改动远不那么激进的第5版。第5版于2009年发布,只进行了一些无争议的改进。然后在2015年发布了第6版,这是一个重大更新,其中包括原计划加到第4版中的一些想法。从那时起,我们每年都有新的小更新。
语言不断发展这一事实意味着浏览器必须不断跟进,如果你使用的是较旧的浏览器,则可能无法支持所有功能。语言设计人员谨慎地不做任何可能破坏现有程序的更改,因此新浏览器仍然可以运行旧程序。在本书中,我使用的是2017版JavaScript。
Web浏览器不是唯一使用JavaScript的平台。一些数据库(如MongoDB和CouchDB)也使用JavaScript作为脚本和查询语言。用于桌面和服务器编程的几个平台为在浏览器之外编写JavaScript提供了环境,其中最值得注意的是Node.js项目(详见第20章)。