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