信息卡片 | |
---|---|
名称 | 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 生成器
…