| 信息卡片 | |
|---|---|
| 名称 | JavaScript悟道 | 
| 类型 | [x] 书籍 [ ] 讲座 [ ] 视频 | 
| 出版日期 | 2021-06 | 
| 阅读日期 | 2021-08-03 | 
| 更新日期 | |
| 官网、豆瓣 | 豆瓣 | 
| 出版社/出品人 | 人民邮电出版社 道格拉斯 死月译 | 
| 有无电子版 | 微信读书 | 
| 相关链接 | |
| 备注 | 《How JavaScript Works》作者json之父,敢说。 | 

按:
又是一本JS语言书!这本书有点意思,相比犀牛书、红宝书,这本书最大的亮点是作者敢说,有观点输出,同时又不像绿皮书晦涩难读!给我的启发特别大:JS什么时候出继任者?如果一个特性用起来吃力为什么不用更好的选择?不做语言的追随者,做有态度的使用者。
本书大纲,32章节,没有分类,太长了,我尝试按我的理解进行分组
那直接开始读吧!惯例,读书时候会不断丰富我的知识脉络。
阅读计划:
本书不会讲解JavaScript引擎或者虚拟机,而会讲解JavaScript这门语言本身,以及每一位JavaScript开发人员都需要明确的事情。 本书可能会让你重新认识JavaScript,包括它是如何运作的、怎样让它变得更优秀,以及如何更好地使用它。 本书还会教你如何正确地看待JavaScript,以及如何正确地用JavaScript进行思考。 在本书中,我会依照ES6版本来讲解,并不会赘述ES1、ES3以及ES5等版本的细节。 这些内容实际上并不重要,毕竟我们只需要关注当下的JavaScript就好了。
就该这样!
- 只关注当下的js版本
 - 如果没有提到某些特性,那可能是设计的不好
 - 越来越多特性的加入,充满奇怪用法和边界情况会越来越多
 - 不用精通语言所有的特性,应该关注代码可读性、可维护、有无错误
 - 使用js的最小集,精粹
 - 关注 js的最佳实践,可以让未来的我们更容易理解新的编程范式
 
1 命名
命名常规:有意义、注意保留字,$一般留给功能,_一般用于私有语义化、构造函数首字母大写来约定。
2 数值
接下来的几章节都是number相关。来自 IEEE754标准,
注意0比如
(1/0)!==(1/-0);Object.is(0,-0); // false
NaN 的特点是 IEEE754预定的。不等于自身,没法比较。可以用 Number.isNaN(value)来判断。
数值类型集成 Number.prototype,但没啥用。接下来提到了最大数值、运算符、位运算(这个我单独整理了)、Math对象。
接下来还做了一个例子说明js里的数字精度有问题,略过了,真在乎应该用第三方的 math.js
3 高精度整数
js没有64位整数类型,这个数字比 Number.MAX_SAFE_INTERGER还长三位。
一番复杂的操作,实现 bigInteger 函数,细节没看,我琢磨这个不是应该介绍 bigInt这个基本类型么?
4 高精度浮点数
5 高精度有理数
6 布尔类型
这引出了隐式类型 truthy/falsy ,比如 false null undefined``'' 0 NaN,嚯,这不就是 ??和 ||的区别么。
7 数组
基础概念、栈队列、数座搜索、reduce、遍历api,细节可以看我单独整理 JS之数组
8 对象
单独摘出去了。JS对象
9 字符串
字符串、length、UnionCode、模板字符串字面量、正则表达式(好家伙放字符串里了)
10 底型
11 语句
- 声明let/function/const/var
 - 表达式
 
作者不建议使用 自增++ 和 --,本来是早期用来操作指针的,js摆脱了指针,已经没啥意义,还有可能造成调试问题。
不建议使用switch隐式的swtch变量,书写对齐风格。
条件语句会有隐式判断,作者认为应该严谨的布尔类型。
- 循环。for/while/do ,三者用一个就可以,甚至一个也不需要,他认为最好的循环写法是尾递归。
 - 中断。break/continue/throw/return 
12 函数
函数是可嵌套的。当嵌套的函数对象被创建时,它会包含一个外层函数对象所对应的活跃对象引用。拥有“外层函数对象所对应的活跃对象引用”的函数对象就被称为闭包(closure)。这是编程语言史上迄今为止最重要的发现。闭包在Scheme语言中被首次使用,然后通过JavaScript成为主流。JavaScript也因它而神奇。离开闭包,JavaScript就没有了灵魂,只是一个由“还不错的设计初心”“一堆设计失误”和“类”堆砌而成的空架子。
 
13 生成器
…
