原文: http://exploringjs.com/impatient-js/ch_faq-language.html
请参考“JavaScript 参考”部分。
本书通常会提到某项特性是否属于 ECMAScript 5(老一些的浏览器通常支持的版本)或更新版本的一部分。对于更多详细信息(包括 ES5 之前的版本),可以在线参考这几个不错的兼容性表:
- 各种引擎的 ECMAScript 兼容性表(作者 kangax 、webbedspace、zloirock)
- Node.js 兼容性表(作者 William Kapke)
- Mozilla 的 MDN Web 文档为每个特性提供了表格,用于描述相关的 ECMAScript 版本和浏览器支持。
- “Can I use...”记录了 Web 浏览器支持的各类特性(包括 JavaScript 语言特性)。
请参考:
- “TC39 流程”描述了新功能是如何被规划的。
- “FAQ:关于 TC39 流程”回答有关即将推出的功能的各种问题。
JavaScript 经常出问题而不报错。我们来看两个例子。
第一个示例:如果运算符的操作数不是正确的类型,则会根据需要,隐式地进行转换。
> '3' * '5'
15
第二个例子:如果算术计算失败,则会得到一个错误的值,而不是抛出异常。
> 1 / 0
Infinity
经常出问题而不报错的原因是历史遗留问题:直到 ECMAScript 3,JavaScript 才有异常。从那时起,它的设计者才开始避免出问题而不报错。
这个章节回答了这个问题。
本书中的这一部分解释了如何做到这一点。