JavaScript这门语言简单易用,很容易上手,但其语言机制复杂微妙,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理解。本套书直面当前JavaScript开发人员不求甚解的大趋势,深入理解语言内部的机制,介绍了JavaScript中常被人误解和忽视的重要知识点。本书是其中卷,主要介绍了类型、语法、异步和性能。
JavaScript语言有很多复杂的概念,但却用简单的方式体现出来(比如回调函数),因此,JavaScript开发者无需理解语言内部的原理,就能编写出功能的程序。然而,JavaScript的这些复杂精妙的概念才是语言的精髓,即使是经验丰富的JavaScript开发者,如果没有认真学习,也无法真正理解语言本身的特性。正是因为绝大多数人不求甚解,一遇到出乎意料的行为就认为是语言本身有缺陷,进而把相关的特性加入黑名单,久而久之就排除了这门语言的多样性,人为地使它变得不完整、不安全。
“你不知道的JavaScript”系列就是要让不求甚解的JavaScript开发者迎难而上,深入语言内部,弄清楚JavaScript每一个零部件的用途。本书介绍了该系列的两个主题:“类型和语法”以及“异步和性能”。掌握了这些知识之后,无论什么技术、框架和流行词语,你都能轻松理解。
Kyle Simpson
作家、培训师、讲师、开源社区的活跃成员,推崇开放的互联网,对JavaScript、HTML5、实时/端对端通信和Web性能有深入研究。
单业 (译者)
计算机专业硕士,软件工程师,曾供职于多家软件公司,从事软件开发工作,现居于上海。负责本书第二部分“异步和性能”的翻译。
姜南 (译者)
从事过国内外金融、通信、移动互联网、数字出版等领域的IT系统开发工作,擅长的技术有Java、C#、HTML5、JavaScript、iOS、Android等。长期在独立技术博客——酷壳(coolshell.cn)发表翻译文章。负责本书首部分“类型和语法”的翻译。
前言 XI
及时部分类型和语法
序2
第1章 类型3
1.1类型4
1.2内置类型4
1.3值和类型6
1.3.1undefined 和undeclared6
1.3.2typeof Undeclared7
1.4小结10
第2章值11
2.1数组11
2.2字符串13
2.3数字15
2.3.1数字的语法16
2.3.2较小的数值18
2.3.3整数的安全范围19
2.3.4整数检测20
2.3.532 位有符号整数20
2.4特殊数值21
2.4.1不是值的值21
2.4.2undefined21
2.4.3特殊的数字23
2.4.4特殊等式27
2.5值和引用28
2.6小结31
第3章原生函数33
3.1内部属性[[Class]]34
3.2封装对象包装35
3.3拆封36
3.4原生函数作为构造函数37
3.4.1Array(..)37
3.4.2Object(..)、Function(..) 和RegExp(..)40
3.4.3Date(..) 和Error(..)41
3.4.4Symbol(..)42
3.4.5原生原型43
3.5小结45
第4章强制类型转换46
4.1值类型转换46
4.2抽象值操作47
4.2.1ToString48
4.2.2ToNumber52
4.2.3ToBoolean53
4.3显式强制类型转换56
4.3.1字符串和数字之间的显式转换57
4.3.2显式解析数字字符串62
4.3.3显式转换为布尔值65
4.4隐式强制类型转换67
4.4.1隐式地简化67
4.4.2字符串和数字之间的隐式强制类型转换68
4.4.3布尔值到数字的隐式强制类型转换71
4.4.4隐式强制类型转换为布尔值72
4.4.5|| 和&&73
4.4.6符号的强制类型转换76
4.5宽松相等和严格相等77
4.5.1相等比较操作的性能77
4.5.2抽象相等
4.6抽象关系比较89
4.7小结91
第5章语法92
5.1语句和表达式92
5.1.1语句的结果值93
5.1.2表达式的副作用95
5.1.3上下文规则99
5.2运算符优先级104
5.2.1短路107
5.2.2更强的绑定107
5.2.3关联108
5.2.4释疑110
5.3自动分号111
5.4错误113
5.5函数参数115
5.6try..finally117
5.7switch120
5.8小结122
附录A混合环境JavaScript123
第二部分异步和性能
序136
第1章异步:现在与将来138
1.1分块的程序139
1.2事件循环141
1.3并行线程143
1.4并发148
1.4.1非交互150
1.4.2交互150
1.4.3协作154
1.5任务156
1.6语句顺序157
1.7小结159
第2章回调161
2.1continuation162
2.2顺序的大脑163
2.2.1执行与计划164
2.2.2嵌套回调与链式回调165
2.3信任问题169
2.3.1五个回调的故事170
2.3.2不只是别人的代码171
2.4省点回调173
2.5小结176
第3章Promise178
3.1什么是Promise179
3.1.1未来值179
3.1.2完成事件183
3.2具有then 方法的鸭子类型188
3.3Promise 信任问题190
3.3.1调用过早190
3.3.2调用过晚191
3.3.3回调未调用192
3.3.4调用次数过少或过多193
3.3.5未能传递参数/ 环境值193
3.3.6吞掉错误或异常194
3.3.7是可信任的Promise 吗195
3.3.8建立信任197
3.4链式流198
3.5错误处理206
3.5.1绝望的陷阱208
3.5.2处理未捕获的情况209
3.5.3成功的坑211
3.6Promise 模式212
3.6.1Promise.all([ .. ])212
3.6.2Promise.race([ .. ])213
3.6.3all([ .. ]) 和race([ .. ]) 的变体216
3.6.4并发迭代217
3.7Promise API 概述219
3.7.1new Promise(..) 构造器219
3.7.2Promise.resolve(..) 和Promise.reject(..)219
3.7.3then(..) 和catch(..)220
3.7.4Promise.all([ .. ]) 和Promise.race([ .. ])221
3.8Promise 局限性222
3.8.1顺序错误处理222
3.8.2单一值223
3.8.3单决议225
3.8.4惯性227
3.8.5无法取消的Promise230
3.8.6Promise 性能231
3.9小结233
第4章生成器234
4.1打破完整运行234
4.1.1输入和输出236
4.1.2多个迭代器239
4.2生成器产生值243
4.2.1生产者与迭代器243
4.2.2iterable246
4.2.3生成器迭代器247
4.3异步迭代生成器250
4.4生成器 Promise254
4.4.1支持Promise 的Generator Runner256
4.4.2生成器中的Promise 并发258
4.5生成器委托262
4.5.1为什么用委托264
4.5.2消息委托264
4.5.3异步委托268
4.5.4递归委托268
4.6生成器并发269
4.7形实转换程序273
4.8ES6 之前的生成器279
4.8.1手工变换280
4.8.2自动转换284
4.9小结285
第5章程序性能287
5.1Web Worker288
5.1.1Worker 环境290
5.1.2数据传递291
5.1.3共享Worker291
5.1.4模拟Web Worker293
5.2SIMD293
5.3asm.js295
5.3.1如何使用asm.js 优化295
5.3.2asm.js 模块296
5.4小结298
第6章性能测试与调优299
6.1性能测试99
6.1.1重复300
6.1.2Benchmark.js301
6.2环境为王303
6.3jsPerf.com305
6.4写好测试309
6.5微性能309
6.5.1不是所有的引擎都类似312
6.5.2大局314
6.6尾调用优化316
6.7小结318
附录Aasynquence 库319
附录B高级异步模式339
“精妙解释JavaScript的核心基础知识,让你收获‘复制 粘贴’和JavaScript工具库中没有也绝不可能教给你的知识。”
——David Walsh,Mozilla博学开发人员
“Kyle关注JavaScript的异步特性,并为你展示如何通过Promise和生成器理清这一特性。”
——Marc Grabanski,Frontend Masters首席执行官兼UI开发工程师
“Promise和Chrome都已经成为提高代码可读性和可维护性的重要工具,本书涵盖的内容会让你对并发和异步有越来越多的控制。”
——Jake Archibald,Google Chrome开发大使
这书上册我看过,写的很好
很不错的书
学JavaScript拿来印证辅助学习,很不错!
ok ok
非常好,提升自己。
不错的辅助书籍,有助于学习
挺好的 看完高三后在看
和上卷一样的效果,棒
还不错 满意 第一次买
大神们推荐的,值得一看,期待下卷。
有点慢,书有点折
还没看,先来评价
内容还不错,有点看不太懂,目前还在学习中
昨天下午下单,今天就到了,速度很快。快递小哥态度不错,书的质量不错。当当真给力.
包装很好。
书还没看,应该还不错,书还没看,应该还不错
买给自己的学生看的,正好教这个学科,帮助很大
一次下了两册,这本还没看…还没看…
技术人员必备工具书
不错,帮助很大
周年庆屯一波,实惠超值
刚收到图书的时候,订单中是有申请发票的,但是包裹里面没有发票!于是第一次联系客服申请,客服帮我申请后,我给了具体的收货地址和手机号码,然后客服跟我说48小时内审核通过就会寄出并给我发送发货通知。结果隔了2天,没有发货通知,于是第二次联系客服,客服和我说已经在处理了的,需要审核时间,于是我很耐心地等待。等了两天,依旧没有结果,我第三次联系客服,客服又说48小时,我说如果我48小时内再没有收到任何通知,我就要投诉了。结果客服转到了人工服务那边,第二天客服打电话给我,说已经把发票递送出去了的,并且没有签收成功,我问了一下手机号码是否是我的,结果她查看后才发现手机号写成了订单号。这种低级错误怎么可以出现?如果我需要这张发票去报销,而报销时间截止了,那么这个责任应该由谁来承担?并且几次联系客服后,都说在审核,是否有认真查看信息?订单号以34开头,相信大家都知道绝对不是手机号码!而当当对于这件事并没有很诚挚地跟我道歉和做出相应的赔偿!
花了一周时间把上卷看完,正在看中卷。非常不错
印刷不如上册清晰,翻译不如上册风趣。但内容非常好,技术书,要求不高,值得购买!
这个系列的书很好,适合有点JS基础的人阅读,等下卷出了,就把这套补齐。
质量很好,内容也很好,这个系列的就剩下册没出了,出了马上买