## 4.常见问题:JavaScript
> 原文: [http://exploringjs.com/impatient-js/ch_faq-language.html](http://exploringjs.com/impatient-js/ch_faq-language.html)
### 4.1 有哪些 JavaScript 的优秀参考资料?
请参考[“JavaScript 参考”](ch_big-picture.html#javascript-references)部分。
### 4.2 如何了解哪些 JavaScript 特性在哪些运行环境中受支持?
本书通常会提到某项特性是否属于 ECMAScript 5(老一些的浏览器通常支持的版本)或更新版本的一部分。对于更多详细信息(包括 ES5 之前的版本),可以在线参考这几个不错的兼容性表:
* [各种引擎的 ECMAScript 兼容性表](http://kangax.github.io/compat-table/)(作者 [kangax](https://twitter.com/kangax)
、[webbedspace](https://twitter.com/webbedspace)、[zloirock](https://twitter.com/zloirock))
* [Node.js 兼容性表](https://node.green)(作者 [William Kapke](https://twitter.com/williamkapke))
* Mozilla 的 [MDN Web 文档](https://developer.mozilla.org/en-US/docs/Web/JavaScript)为每个特性提供了表格,用于描述相关的 ECMAScript 版本和浏览器支持。
* [“Can I use...”](https://caniuse.com/)记录了 Web 浏览器支持的各类特性(包括 JavaScript 语言特性)。
### 4.3 我在哪里可以找到 JavaScript 将来计划添加哪些功能?
请参考:
* [“TC39 流程”](ch_history.html#tc39-process)描述了新功能是如何被规划的。
* [“FAQ:关于 TC39 流程”](ch_history.html#tc39-process-faq)回答有关即将推出的功能的各种问题。
### 4.4 为什么 JavaScript 经常出问题而不报错?
JavaScript 经常出问题而不报错。我们来看两个例子。
第一个示例:如果运算符的操作数不是正确的类型,则会根据需要,隐式地进行转换。
```js
> '3' * '5'
15
```
第二个例子:如果算术计算失败,则会得到一个错误的值,而不是抛出异常。
```js
> 1 / 0
Infinity
```
经常出问题而不报错的原因是历史遗留问题:直到 ECMAScript 3,JavaScript 才有异常。从那时起,它的设计者才开始避免出问题而不报错。
### 4.5 为什么我们不能通过删除过时的功能和坑来清理 JavaScript?
[这个章节](ch_history.html#backward-compatibility)回答了这个问题。
### 4.6 如何快速得到一段 JavaScript 代码的运行结果?
本书中的[这一部分](ch_big-picture.html#trying-out-code)解释了如何做到这一点。
- I.背景
- 1.关于本书(ES2019 版)
- 2.常见问题:本书
- 3. JavaScript 的历史和演变
- 4.常见问题:JavaScript
- II.第一步
- 5.概览
- 6.语法
- 7.在控制台上打印信息(console.*)
- 8.断言 API
- 9.测验和练习入门
- III.变量和值
- 10.变量和赋值
- 11.值
- 12.运算符
- IV.原始值
- 13.非值undefined和null
- 14.布尔值
- 15.数字
- 16. Math
- 17. Unicode - 简要介绍(高级)
- 18.字符串
- 19.使用模板字面值和标记模板
- 20.符号
- V.控制流和数据流
- 21.控制流语句
- 22.异常处理
- 23.可调用值
- VI.模块化
- 24.模块
- 25.单个对象
- 26.原型链和类
- 七.集合
- 27.同步迭代
- 28.数组(Array)
- 29.类型化数组:处理二进制数据(高级)
- 30.映射(Map)
- 31. WeakMaps(WeakMap)
- 32.集(Set)
- 33. WeakSets(WeakSet)
- 34.解构
- 35.同步生成器(高级)
- 八.异步
- 36. JavaScript 中的异步编程
- 37.异步编程的 Promise
- 38.异步函数
- IX.更多标准库
- 39.正则表达式(RegExp)
- 40.日期(Date)
- 41.创建和解析 JSON(JSON)
- 42.其余章节在哪里?