你不知道的JavaScript(中卷)
Kyle Simpson
单业, 姜南 译
出版时间:2016年09月
页数:358
JavaScript语言有很多复杂的概念,但却用简单的方式体现出来(比如回调函数),因此,JavaScript开
发者无需理解语言内部的原理,就能编写出功能全面的程序。然而,JavaScript的这些复杂精妙的概念才
是语言的精髓,即使是经验丰富的JavaScript开发者,如果没有认真学习,也无法真正理解语言本身的特
性。正是因为绝大多数人不求甚解,一遇到出乎意料的行为就认为是语言本身有缺陷,进而把相关的特
性加入黑名单,久而久之就排除了这门语言的多样性,人为地使它变得不完整、不安全。
“你不知道的JavaScript”系列就是要让不求甚解的JavaScript开发者迎难而上,深入语言内部,弄清楚
JavaScript每一个零部件的用途。本书介绍了该系列的两个主题:“类型和语法”以及“异步和性能”。
掌握了这些知识之后,无论什么技术、框架和流行词语,你都能轻松理解。

“精妙解释JavaScript的核心基础知识,让你收获‘复制+粘贴’
和JavaScript工具库中没有也绝不可能教给你的知识。”
——David Walsh,Mozilla资深开发人员
“Kyle关注JavaScript的异步特性,并为你展示如何
通过promise和生成器理清这一特性。”
——Marc Grabanski,
Frontend Masters首席执行官兼UI开发工程师
“Promise和Chrome都已经成为提高代码可读性和可维护性的重要工具,
本书涵盖的内容会让你对并发和异步有越来越多的控制。”
——Jake Archibald,Google Chrome开发大使
  1. 前言
  2. 第一部分 类型和语法
  3. 序 
  4. 第1章 类型 
  5. 1.1 类型 
  6. 1.2 内置类型
  7. 1.3 值和类型 
  8. 1.3.1 undefined和undeclared 
  9. 1.3.2 typeof Undeclared 
  10. 1.4 小结
  11. 第2章 值
  12. 2.1 数组
  13. 2.2 字符串
  14. 2.3 数字
  15. 2.3.1 数字的语法
  16. 2.3.2 较小的数值
  17. 2.3.3 整数的安全范围
  18. 2.3.4 整数检测
  19. 2.3.5 32位有符号整数
  20. 2.4 特殊数值
  21. 2.4.1 不是值的值
  22. 2.4.2 undefined
  23. 2.4.3 特殊的数字
  24. 2.4.4 特殊等式
  25. 2.5 值和引用
  26. 2.6 小结
  27. 第3章 原生函数
  28. 3.1 内部属性[[Class]] 
  29. 3.2 封装对象包装
  30. 3.3 拆封
  31. 3.4 原生函数作为构造函数
  32. 3.4.1 Array(..) 
  33. 3.4.2 Object(..)、Function(..)和RegExp(..)
  34. 3.4.3 Date(..)和Error(..)
  35. 3.4.4 Symbol(..)
  36. 3.4.5 原生原型
  37. 3.5 小结
  38. 第4章 强制类型转换
  39. 4.1 值类型转换
  40. 4.2 抽象值操作
  41. 4.2.1 ToString
  42. 4.2.2 ToNumber
  43. 4.2.3 ToBoolean
  44. 4.3 显式强制类型转换
  45. 4.3.1 字符串和数字之间的显式转换
  46. 4.3.2 显式解析数字字符串
  47. 4.3.3 显式转换为布尔值
  48. 4.4 隐式强制类型转换
  49. 4.4.1 隐式地简化
  50. 4.4.2 字符串和数字之间的隐式强制类型转换
  51. 4.4.3 布尔值到数字的隐式强制类型转换
  52. 4.4.4 隐式强制类型转换为布尔值
  53. 4.4.5 ||和&&
  54. 4.4.6 符号的强制类型转换
  55. 4.5 宽松相等和严格相等
  56. 4.5.1 相等比较操作的性能
  57. 4.5.2 抽象相等
  58. 4.6 抽象关系比较
  59. 4.7 小结
  60. 第5章 语法
  61. 5.1 语句和表达式
  62. 5.1.1 语句的结果值
  63. 5.1.2 表达式的副作用
  64. 5.1.3 上下文规则
  65. 5.2 运算符优先级
  66. 5.2.1 短路
  67. 5.2.2 更强的绑定
  68. 5.2.3 关联
  69. 5.2.4 释疑
  70. 5.3 自动分号
  71. 5.4 错误
  72. 5.5 函数参数
  73. 5.6 try..finally
  74. 5.7 switch
  75. 5.8 小结
  76. 附录A 混合环境
  77. 第二部分 异步和性能
  78. 第1章 异步:现在与将来
  79. 1.1 分块的程序
  80. 1.2 事件循环
  81. 1.3 并行线程
  82. 1.4 并发
  83. 1.4.1 非交互
  84. 1.4.2 交互
  85. 1.4.3 协作
  86. 1.5 任务
  87. 1.6 语句顺序
  88. 1.7 小结
  89. 第2章 回调
  90. 2.1 continuation 
  91. 2.2 顺序的大脑
  92. 2.2.1 执行与计划
  93. 2.2.2 嵌套回调与链式回调
  94. 2.3 信任问题
  95. 2.3.1 五个回调的故事
  96. 2.3.2 不只是别人的代码
  97. 2.4 省点回调
  98. 2.5 小结
  99. 第3章 Promise 
  100. 3.1 什么是Promise 
  101. 3.1.1 未来值
  102. 3.1.2 完成事件
  103. 3.2 具有then方法的鸭子类型
  104. 3.3 Promise信任问题
  105. 3.3.1 调用过早
  106. 3.3.2 调用过晚
  107. 3.3.3 回调未调用
  108. 3.3.4 调用次数过少或过多
  109. 3.3.5 未能传递参数/环境值
  110. 3.3.6 吞掉错误或异常
  111. 3.3.7 是可信任的Promise吗
  112. 3.3.8 建立信任
  113. 3.4 链式流
  114. 3.5 错误处理
  115. 3.5.1 绝望的陷阱
  116. 3.5.2 处理未捕获的情况
  117. 3.5.3 成功的坑
  118. 3.6 Promise模式
  119. 3.6.1 Promise.all([ .. ])
  120. 3.6.2 Promise.race([ .. ]) 
  121. 3.6.3 all([ .. ])和race([ .. ])的变体
  122. 3.6.4 并发迭代
  123. 3.7 Promise API概述
  124. 3.7.1 new Promise(..)构造器
  125. 3.7.2 Promise.resolve(..)和Promise.reject(..)
  126. 3.7.3 then(..)和catch(..)
  127. 3.7.4 Promise.all([ .. ])和Promise.race([ .. ]) 
  128. 3.8 Promise局限性
  129. 3.8.1 顺序错误处理
  130. 3.8.2 单一值
  131. 3.8.3 单决议
  132. 3.8.4 惯性
  133. 3.8.5 无法取消的Promise 
  134. 3.8.6 Promise性能
  135. 3.9 小结
  136. 第4章 生成器
  137. 4.1 打破完整运行
  138. 4.1.1 输入和输出
  139. 4.1.2 多个迭代器
  140. 4.2 生成器产生值
  141. 4.2.1 生产者与迭代器
  142. 4.2.2 iterable
  143. 4.2.3 生成器迭代器
  144. 4.3 异步迭代生成器
  145. 4.4 生成器+Promise 
  146. 4.4.1 支持Promise的Generator Runner 
  147. 4.4.2 生成器中的Promise并发
  148. 4.5 生成器委托
  149. 4.5.1 为什么用委托
  150. 4.5.2 消息委托
  151. 4.5.3 异步委托
  152. 4.5.4 递归委托
  153. 4.6 生成器并发
  154. 4.7 形实转换程序
  155. 4.8 ES6之前的生成器
  156. 4.8.1 手工变换
  157. 4.8.2 自动转换
  158. 4.9 小结
  159. 第5章 程序性能
  160. 5.1 Web Worker 
  161. 5.1.1 Worker环境
  162. 5.1.2 数据传递
  163. 5.1.3 共享Worker 
  164. 5.1.4 模拟Web Worker 
  165. 5.2 SIMD 
  166. 5.3 asm.js 
  167. 5.3.1 如何使用asm.js优化
  168. 5.3.2 asm.js模块
  169. 5.4 小结
  170. 第6章 性能测试与调优
  171. 6.1 性能测试
  172. 6.1.1 重复
  173. 6.1.2 Benchmark.js
  174. 6.2 环境为王
  175. 6.3 jsPerf.com 
  176. 6.4 写好测试
  177. 6.5 微性能
  178. 6.5.1 不是所有的引擎都类似
  179. 6.5.2 大局
  180. 6.6 尾调用优化
  181. 6.7 小结
  182. 附录A asynquence库 
  183. 附录B 高级异步模式
书名:你不知道的JavaScript(中卷)
作者:Kyle Simpson
译者:单业, 姜南 译
国内出版社:人民邮电出版社
出版时间:2016年09月
页数:358
书号:978-7-115-43116-5
原版书书名:You Don't Know JS: Types & Grammar
原版书出版商:O'Reilly Media
Kyle Simpson
 
Kyle Simpson是来自得克萨斯州Austin的一位UI架构师。他热爱用户体验,特别热衷于如何将UI优化为尽可能响应式的、高效能的、安全的和可扩展的。他认为JavaScript是终极语言,并且一贯地致力于如何推进该语言。如果有什么事情是用JavaScript或Web技术无法做到的,他会为此苦恼。他拥有众多的开源项目,包括LABjs、HandlebarJS/BikechainJS和flXHR,并且他还是SWFObject核心贡献者。