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

image.png

按:
又是一本JS语言书!这本书有点意思,相比犀牛书、红宝书,这本书最大的亮点是作者敢说,有观点输出,同时又不像绿皮书晦涩难读!给我的启发特别大:JS什么时候出继任者?如果一个特性用起来吃力为什么不用更好的选择?不做语言的追随者,做有态度的使用者。

本书大纲,32章节,没有分类,太长了,我尝试按我的理解进行分组
书籍《JavaScript悟道》 - 图2

那直接开始读吧!惯例,读书时候会不断丰富我的知识脉络。
阅读计划:

  • 第零章、第一章
  • 第二章

    0 导读

本书不会讲解JavaScript引擎或者虚拟机,而会讲解JavaScript这门语言本身,以及每一位JavaScript开发人员都需要明确的事情。 本书可能会让你重新认识JavaScript,包括它是如何运作的、怎样让它变得更优秀,以及如何更好地使用它。 本书还会教你如何正确地看待JavaScript,以及如何正确地用JavaScript进行思考。 在本书中,我会依照ES6版本来讲解,并不会赘述ES1、ES3以及ES5等版本的细节。 这些内容实际上并不重要,毕竟我们只需要关注当下的JavaScript就好了。

就该这样!

  • 只关注当下的js版本
  • 如果没有提到某些特性,那可能是设计的不好
  • 越来越多特性的加入,充满奇怪用法和边界情况会越来越多
  • 不用精通语言所有的特性,应该关注代码可读性、可维护、有无错误
  • 使用js的最小集,精粹
  • 关注 js的最佳实践,可以让未来的我们更容易理解新的编程范式

1 命名

命名常规:有意义、注意保留字,$一般留给功能,_一般用于私有语义化、构造函数首字母大写来约定。

2 数值

接下来的几章节都是number相关。来自 IEEE754标准,

注意0比如

  1. (1/0)!==(1/-0);
  2. 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、模板字符串字面量、正则表达式(好家伙放字符串里了)

分词tokenization是编译过程的一部分。

10 底型

也就是 Null undefined

11 语句

  • 声明let/function/const/var
  • 表达式

作者不建议使用 自增++--,本来是早期用来操作指针的,js摆脱了指针,已经没啥意义,还有可能造成调试问题。

不建议使用switch隐式的swtch变量,书写对齐风格。
条件语句会有隐式判断,作者认为应该严谨的布尔类型。

  • 循环。for/while/do ,三者用一个就可以,甚至一个也不需要,他认为最好的循环写法是尾递归。
  • 中断。break/continue/throw/return

    12 函数

    函数是可嵌套的。当嵌套的函数对象被创建时,它会包含一个外层函数对象所对应的活跃对象引用。拥有“外层函数对象所对应的活跃对象引用”的函数对象就被称为闭包(closure)。这是编程语言史上迄今为止最重要的发现。闭包在Scheme语言中被首次使用,然后通过JavaScript成为主流。JavaScript也因它而神奇。离开闭包,JavaScript就没有了灵魂,只是一个由“还不错的设计初心”“一堆设计失误”和“类”堆砌而成的空架子。

13 生成器