## 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.其余章節在哪里?