[TOC]
# 第二章 为什么选择JavaScript?
那里有很多编程语言。为什么要使用JavaScript?本章讨论了七个方面,当您选择一种编程语言时,这些方面很重要,并认为JavaScript整体性很好:
1. 是免费提供吗?
2. 它是一种优雅的编程语言吗?
3. 在实践中有用吗?
4. 它是否具有良好的工具,特别是良好的集成开发环境(IDE)?
5. 它是否足够快你想做什么?
6. 是否广泛使用?
7. 它有未来吗?
## JavaScript自由可用吗
JavaScript 可以说是最开放的编程语言:ECMA-262,其规范是ISO标准。该规范紧随其后的是独立方的许多实施。其中一些实现是开源的。此外,语言的演变由TC39处理,TC39由所有主要浏览器厂商在内的几家公司组成。这些公司中的许多公司通常是竞争对手,但是他们为了这个语言的利益而共同合作。
## JavaScript优雅吗
可以说优雅,也不优雅。我用不同范例的几种编程语言编写了相当数量的代码。因此,我很清楚JavaScript不是优雅的顶峰。然而,它是一种非常灵活的语言,具有相当优雅的核心,使您能够使用面向对象编程和功能编程的混合体。
JavaScript引擎之间的语言兼容性曾经是一个问题,但现在不存在了,部分归功于[est262 suite](https://github.com/tc39/test262),它检查引擎是否符合ECMAScript规范。相比之下,浏览器和DOM的差异仍然是一个挑战。这就是为什么通常最好依靠框架来隐藏这些差异。
## JavaScript有用吗
世界上最美丽的编程语言是无用的,除非它允许您编写所需的程序。
### 图形用户界面
在图形用户界面方面,JavaScript将成为HTML5的一部分。在本节中,我将HTML5用于“浏览器平台”(HTML,CSS和浏览器JavaScript API)。HTML5广泛部署,不断进步。它正在慢慢成为编写全功能跨平台应用程序的完整层; 类似于Java平台,它几乎像一个嵌入式操作系统。HTML5的一个卖点是它可以让您编写跨平台的图形用户界面。这些都是妥协的:你放弃一些质量来换取不限于一个操作系统。过去,“跨平台”意味着Windows,Mac OS或Linux。
但现在我们有了两个额外的互动平台:网络和移动平台。有了HTML5,你可以通过[Cordova](http://cordova.apache.org/)、[Chrome Apps](http://developer.chrome.com/apps/)和[TideSDK](http://www.tidesdk.org/)等技术来实现所有这些平台的目标。
另外,有几个平台将网络应用程序作为本机应用程序,或者您可以自己安装它们,例如Chrome操作系统,Firefox操作系统和Android。
### 其他技术补充JavaScript
除了HTML5,还有更多的技术可以补充JavaScript,使语言更有用:
**JS库**
JavaScript有丰富的库,使您能够完成从解析JavaScript(通过[Esprima](http://esprima.org/))到处理和显示PDF文件(通过[PDF.js](https://github.com/mozilla/pdf.js))的任务。
**Node.js**
Node.js 平台允许您编写服务器端代码和shell脚本(构建工具,测试运行程序等)。
**JSON**(JavaScript对象表示法,在第22章中介绍)
JSON 是一种以JavaScript为基础的数据格式,已经变得流行在Web上交换数据(例如,Web服务的结果)。
**NoSQL数据库**(如[CouchDB](http://couchdb.apache.org/)和[MongoDB](http://www.mongodb.org/))
这些数据库紧密地集成了JSON和JavaScript。
## JavaScript有好的工具吗?
JavaScript越来越好的构建工具(例如,[Gulp](http://gulpjs.com/))和测试工具(例如[mocha](http://visionmedia.github.io/mocha/))。Node.js可以通过一个shell(而不仅仅是浏览器)来运行这些工具。这个领域的一个风险是碎片化,随着我们越来越多地使用这些工具。
JavaScript IDE空间仍然是新兴的,但它的快速成长。网络开发的复杂性和活力使得这个空间成为创新的肥沃土地。两个开源示例是[ Brackets](http://brackets.io/)和[Light Table](http://www.lighttable.com/)。
此外,浏览器正变得越来越有能力开发环境。特别是Chrome,最近取得了令人瞩目的进展。未来将集成更多的ide和浏览器,这将是一件很有趣的事情。
## JavaScript足够快吗?
JavaScript引擎已经取得了巨大的进步,从缓慢的口译员演变成了快速即时编译器。它们现在对于大多数应用来说足够快。此外,新的想法已经在开发中,可以使JavaScript足够快地用于其余的应用程序:
[asm.js](http://asmjs.org/)是一个(非常静态)的JavaScript子集,在当前引擎上运行速度很快,与编译的C ++一样快。例如,它可以用于实现Web应用程序的性能关键算法部分。它也被用于将基于C ++的游戏移植到Web平台。
[ParallelJS](http://www.2ality.com/2013/12/paralleljs.html)并行化使用新阵列方法的JavaScript代码mapPar,filterPar和reducePar(现有阵列方法可并行化版本map,filter和reduce)。为了使并行化工作,回调必须以特殊样式写入; 主要的限制是您不能突变在回调中未创建的数据。
## JavaScript使用广泛吗?
广泛使用的语言通常有两个好处。首先,这种语言更好地记录和支持。第二,更多的程序员知道这一点,当您需要雇用某人或正在寻找基于该语言的工具的客户时,这很重要。
JavaScript被广泛使用并且获得了上述两个优点:
* 这些天,JavaScript的文档和支持都有各种形式和大小:书籍,播客,博客文章,电子邮件通讯,论坛等。[第33章](http://speakingjs.com/es5/ch33.html)指出重要的资源。
* JavaScript开发人员的需求很大,但他们的队伍也在不断增加。
## JavaScript有未来吗?
几件事情表明JavaScript有一个光明的未来:
* 语言正在稳步发展; ECMAScript 6看起来不错。
* 有很多与JavaScript相关的创新(例如,上述asm.js和ParallelJS,Microsoft的TypeScript等)。
* JavaScript的一个组成部分的Web平台正在快速成熟。
* JavaScript由广泛的公司联盟支持 - 没有一个人或公司控制它。
## 结论
考虑到上面列出了什么使语言具有吸引力,JavaScript正在做得非常好。这当然不是完美的,但是现在很难打败,事情只会越来越好。
- 本书简介
- 前言
- 关于这本书你需要知道些什么
- 如何阅读本书
- 目录
- I. JavaScript的快速入门
- 第1章 基础的JavaScript
- II. 背景知识
- 第2章 为什么选择JavaScript?
- 第3章 JavaScript的性质
- 第4章 JavaScript是如何创造出来的
- 第5章 标准化:ECMAScript
- 第6章 JavaScript的历史里程碑
- III. 深入JavaScript
- 第7章 JavaScript语法
- 第8章 值
- 第9章 运算符
- 第10章 布尔值
- 第11章 数字
- 第12章 字符串
- 第13章 语句
- 第14章 异常捕获
- 第15章 函数
- 第16章 变量:作用域、环境和闭包
- 第17章 对象和继承
- 第18章 数组
- 第19章 正则表达式
- 第20章 Date
- 第21章 Math
- 第22章 JSON
- 第23章 标准全局变量
- 第24章 编码和JavaScript
- 第25章 ECMAScript 5中的新功能
- IV. 技巧、工具和类库
- 第26章 元代码样式指南
- 第27章 调试的语言机制
- 第28章 子类化内置构造函数
- 第29章 JSDoc:生成API文档
- 第30章 类库
- 第31章 模块系统和包管理器
- 第32章 其他工具
- 第33章 接下来该做什么
- 著作权