iShot2023-01-28 19.15.00.png

脑图点击这儿获取

视频版点击此处播放

↑↑↑↑↑↑ 脑图镇楼 ↑↑↑↑↑↑

Hello,各位小伙伴我们好。

今日我们来为我们讲一本书,便是这个《JavaScript 言语精粹修订版》,作者是:道格拉斯·克罗克福德

image.png

我手里的这本是《2017年10月第16次印刷版本》,距离现在现已有 5 年多了。可是这本书仍然被奉为《解说 JavaScript 的一本神书》,特别适合 初级、中级 前端工程师进行阅读。

可是我们要注意,尽管说这本书是 2017年 印刷的,可是书中说到的概念、界说并没有 考虑 ES6 相关的东西,也便是说它是 朴实的、ES6 之前的 JavaScript 精华的解说

整本书中所有的内容,我把它分为 4 大块:

  1. 前语部分
  2. 中心部分
  3. 其他部分
  4. 附录部分

在解说完这四部分之后,我们会剖析一下这本书在当下时间段针对国内开发者的优缺点,也便是最终的总结。

好,那么废话不多说,下面我们来看一下本书中的内容:

前语

在前语部分,作者说到了一个十分有意思的事情,那便是《为什么必定要运用 JavaScript》,他说:由于你没得选。

针关于 web浏览器而言,JavaScript 是仅有的编程言语,一起它也是世界上最被小看的言语之一。

我们知道, JavaScript 是 布蘭登·艾克 花了 10 天的时间开发而且设计完结的,所以它内部必然包含了许多的优异主意与糟糕的主意。

那么都有什么优异的办法呢? 作者以为:

  1. 函数
  2. 弱类型
  3. 动态目标
  4. 目标字面量

这些东西,都能够被以为是优异的主意,也便是 精华

可是一起,内部也有许多糟糕的主意,也便是 糟粕,比方:根据全局变量的编程模型。

所以:JavaScript 是一个反差显着的言语,它的糟粕和精华相同显眼

而本书,将首要解说: JavaScript 的精华部分,至于 糟粕,将会在附录部分进行阐明。

中心

那么下面我们就进入到本书的中心精华部分,整个精华部分被分为 6 块,分别是:

  1. 语法
  2. 目标
  3. 函数
  4. 承继
  5. 数组
  6. 办法

那么首要,我们先来看语法部分。

语法:

整个语法部分涉及到的是整个 JavaScript 的根底语法。

注释

首要针关于注释而言,作者提出 JavaScript 中的注释首要分为两种:

  1. 单行注释
  2. 多行注释

单行注释是 两个 / ,这个在日常开发中是比较常见的。

而针关于多行注释来说,作者首要供给了一种,便是: **双斜杠中心,放入两个 *** ,这种多行注释的办法,作者并 不引荐 运用。

/*
  多行注释内容
*/

可是我们要注意,在我们现在的日常开发中,多行注释,除了作者说到了这一种之外,其实还有别的一种,那便是:

/**
* 多行注释内容
/

这种注释办法用在 函数上 仍是十分指的引荐的。

标识符

接下来是标识符,所谓标识符指的便是:JavaScript 中的保留字。

书中罗列出来了一分部,可是除此之外,还有一些其他的保留字我们需要注意。

这些保留字 不能够 被作为 变量名 运用。

数字

针关于许多编程言语来说,都供给了多种的数字类型。比方: java 就供给了 int、long、double、float 等 多种数字类型。

可是针关于 JavaScript 来说,它只有一种数字类型,便是 number,除此之外再无其他。

字符串

而关于 JavaScript 中的字符串类型而言,书中首要从两个方面进行了描绘:

  1. 首要是字面量:所谓字面量指的便是 快速创立某种类型的办法。关于字符串来说,它有两种字面量办法: 单引号和双引号。在日常开发中,我们更引荐运用 单引号 的字面量办法。

  2. 第二个叫做特性:这儿的特性首要有三个:

    1. 首要榜首个叫做 可拼接:多个字符串是能够经过 + 的办法进行拼接的。
    2. 第二个叫做 可 length:我们能够经过 字符串.length 的办法,获取字符串的长度
    3. 第三个叫做 有办法:JavaScript 中的字符串供给了十分多的办法,这个我们把它放到 办法 这一大块中再去说就能够。

句子

JavaScript 被称作是一个图灵完备的编程言语。所以它必然要具有 变量声明、逻辑判别 等句子。

JavaScript 中的句子能够写在 <script> 标签 中,每一对花括号中心就能够被叫做一组句子。

书中把 JavaScript 的句子分为 4 大块:

  1. 首要是声明句子:JavaScript 想要声明变量首要有三种办法

    1. 榜首种是 var :它是在 ES6 之前仅有的声明变量的办法,现在现已不引荐运用了。
    2. 第二种是 let:在 ES6 之后能够经过它来界说变量
    3. 最终是 const:在 ES6 之后能够经过它来界说常量
  2. 其次是条件句子:JavaScript 中的条件句子首要有两个

    1. 榜首个是 if
    2. 第二个是 switch

    这两种条件判别办法,在许多的编程言语中都是存在的。可是 JavaScript 中判别条件有些不太相同的当地。

    JavaScript任何表达式 都能够被作为判别条件,而且 有且仅有 6 个值 在条件判别中会被作为 ,它们分别是: false、null、undefined、空字符串、数字 0 、NaN。除此之外,其他的所有值都会被判别为

  3. 再往后便是循环句子:JavaScript 中循环句子首要有三种

    1. 榜首个是 for 循环
    2. 第二个是 while 循环
    3. 第三种是 do...while 循环

    一起,针关于 for 循环来说,又能够被分为: 一般 for 循环 和 forIn 循环

  4. 最终便是强制跳转句子,所谓强制跳转句子指的是: 会强制更改程序履行次序的句子,这些句子在日常开发中也是被常常运用的:

    1. 比方 break:它会让程序 退出循环 || 退出 switch 句子
    2. continue:会让程序 中止当时循环
    3. 然后是 renturn:它会中止函数的履行
    4. throw:会经过 抛出反常的办法,中止程序履行
    5. try...catch:会经过 捕获反常 的办法,让程序强制跳转到其他的逻辑中

表达式

说完句子之后,下面便是表达式。

作者对表达式进行了清晰的界说,指的是: 一组代码的调集,而且回来一个值

JavaScript 中的表达式 5 个,分别为:

  1. 算数表达式
  2. 字符串表达式
  3. 逻辑值表达式
  4. 左值表达式
  5. 根本表达式

字面量(目标)

在前面我们说到了 JavaScript 中存在字面量的概念。我们能够经过字面量的办法直接界说 字符串

一起,字面量也有许多其他的运用场景,比方:能够运用字面量界说目标或数组,而不需要像其他的言语相同,必须先 new 一下。

函数

整个语法部分,最终一块便是函数,可是在书中针对 语法部分函数 的解说比较粗糙,所以这一块我们放到后面独自的函数模块进行阐明。

目标

语法部分说完之后,接下来我们来看下书中 目标 的部分。

目标在 JavaScript 中是一个十分特殊的概念。

界说

JavaScript 中数据类型首要被分为两种:

  1. 简略数据类型:有 number、string、boolean、null、undefined、symbol、bigint
  2. 除了简略数据类型之外,其他的都被叫做 杂乱数据类型,有: 数组、函数、正则表达式、目标。 而 JavaScript 中,所有的杂乱数据类型,都被统称为 目标

字面量

目标有字面量的创立办法,这个在刚才现已有介绍了,所以这儿就不在多复述了。

检索与更新

一起关于目标来说,它能够 获取值(检索) ,也能够 修正值(更新)

JavaScript 中供给了两种检索与更新的办法:

  1. 榜首种是经过 . 语法:这种办法最为简略易懂,是大多数情况下引荐运用的办法
  2. 第二种是经过 [] 语法[] 内部能够放一个变量,适用于 根据变量取值的情况

原型

一起 JavaScript 中供给了原型的概念,根据原型还延伸出了原型承继的概念。

而关于目标的原型,我们放到 承继 这儿,再进行具体阐明。

反射

然后我们来看 反射。能够许多小伙伴看到反射这个词的时分,会比较懵。

其实在 JavaScript 里边,没有反射的清晰界说。我们就把它作为是 作者的一个称号即可

反射这一块里边,首要包含了两部分:

  1. 利用 typeof 获取变量的类型
  2. 利用 hasOwnProperty 判别 目标本身特点中是否具有指定的特点,具有则回来 true,否则则是 false

枚举

hasOwnProperty 这个办法在 “枚举” 的时分会十分有用。

和反射相同,JavaScript 中相同没有枚举的清晰概念。它相同是作者的一个称号。

书中的枚举指的首要是: 遍历一个目标而且获取该目标本身的所有特点

遍历能够直接经过 forIn 循环履行,而判别是否为目标本身特点,则需要凭借 hasOwnProperty 办法

删去

最终,针关于目标模块,作者还说到了 删去 的概念。

我们能够利用 delete 关键字,直接删去目标中的指定特点。这也是很便利的。

函数

在目标说完之后,下面我们就进入到了一个 大块 了,那便是函数!

函数 这一章里边,存在许多的 落后性描绘的误差,一起也有许多的 精华

具体是什么,我们往下看就知道了。

精华

在函数这一章的开篇,作者有一句话我十分喜欢,它描绘了整个编程的本质,我们一起来读一下:所谓编程,便是将一组需求分解成一组函数与数据结构的技能

在这句话中,把函数的效果推到了一个十分重要的方位。

现实也相同如此。

所以书中花费了十分大的章节来介绍函数,我们看脑图也能够看的出来。

那么下面,我们就进入到函数的内容之中。

函数目标

我们之前说过,在 JavaScript 中除了根本数据类型之外,其他的都是目标。

所以函数本质上也是一个目标。只不过它拥有一个叫做 “调用” 的特点,能够被调用而已。

函数字面量

而如果想要界说函数,那么能够经过 函数字面量 的办法来进行界说。

所谓的函数字面量,其实便是我们往常界说函数的办法,一共分为两种:

  1. 命名函数:function f (a, b) { ... }
  2. 匿名函数:const f = function (a, b) { ... }

调用

而在函数调用时,书中一共分为两部分去说:

  1. 首要榜首部分是 函数能够调用其他函数:这个只需我们运用过编程言语,那么应该都很好了解。这种办法会 暂停当时函数履行,传递控制权和参数给新的函数

  2. 第二种是 附加参数:在 JavaScript 的函数中,存在两个附加参数:

    1. 榜首个是 this:它的值取决于调用的办法。书中把调用办法分成了 4 大类:

      1. 前三大类 办法调用、函数调用、结构器调用this 指向调用方
      2. 最终一大类 apply 调用 中, this 指向 指定值
    2. 第二个 arguments:它表明函数得到的所有实践参数

结构器办法

函数除了能够被直接 调用 之外,还能够被作为 结构器运用,也便是所谓的 结构器办法。

关于 结构器办法,书中首要清晰了四个方面,分别是:

  1. JavaScript 是一门根据原型承继的言语,这就意味着 目标能够直接从其他目标中承继特点。 关于承继的话题,我们在后面独自说
  2. 第二个是: 结构器本身便是函数
  3. 第三便是: 结构器不经过小括号的办法直接调用,而是要 合作 new 关键字 运用
  4. 最终便是:根据 约好,结构器它的 首字母要大写

这四块是十分重要的,哪怕是在当下时间段仍然是卓有成效的。

apply 调用办法

在前面,我们说到了 apply 调用办法,我们知道所谓的 apply 调用办法 实践上是分为三个办法的,分别是:

  1. apply
  2. call
  3. bind

这三个办法的中心效果,便是 改变 this 指向

参数

参数 这个末节里边,相同书中首要说到的便是 arguments,这个我们在前面也说过了,它首要是获取 所有实践参数 的。

回来值

再往后,书中对 函数的回来值 进行了一些阐明。

我们需要知道的,首要是有三点:

  1. 首要榜首点: 函数必然存在回来值。如果你什么都不回来,那么函数默认回来 undefined
  2. 然后: 能够经过 renturn 让函数提早回来指定的值,而且中止履行
  3. 第三:函数也能够合作 new 运用,这样会回来 this

看到这我们有没有发现,书中讲过的许多东西,我们在日常开发中大部分都是知道的。

可是书中把开发的一些 “经验” ,变成了一套具体的 1、2、3 。

我在看的过程中,有时分确实会有一种: “哦~ 原来如此” 或者是 “嗯,确实是这样” 的一种感觉

反常

那么下面我们持续来往下看

书中专门在函数中,对反常进行了一个阐明。

可是阐明的重点仍然是 throw 句子,抛出反常。在抛出反常的,它能够中止函数的履行。

扩大类型的功用

作者把根据原型承继称为: 扩大类型的功用

可是本质上仍是 原型承继,这个我们仍然仍是在 承继 模块中去说就能够。

递归

递归是函数调用十分常见而且杂乱的场景。

书中也对 递归 进行了具体阐明,阐明的办法是经过两部分:

  1. 榜首个便是什么叫递归,所谓递归指的便是: 直接或直接调用本身的函数
  2. 接下来是递归的场景: 递归把一个杂乱问题分解为一组相似的子问题,每一个都用一个寻常解去处理,这是典型的美式言语。一起作者还经过一个 汉诺塔游戏 的案例,进行了举例阐明

效果域

接下来作者说到了效果域的概念。

可是这一块,显着具有十分大的局限性,由于作者的许多观念彻底是根据 ES6 之前的逻辑去说的。

比方,作者说到: JavaScript 中不存在块级效果域。

这个在当时场景下显着是不对的。

所以我看的这本书,尽管是 2017 年 印刷的,可是内容感觉愈加偏老一些。

闭包

接下来是闭包的逻辑。

这儿作者对闭包进行了界说: 内部函数能够拜访界说他们的外部函数的参数和变量 ,这样的函数便是闭包。

我针关于这句话加上我个人的了解,也总结了一句: 能够拜访其它函数效果域中变量的函数 ,便是闭包。

我们能够看看哪个好了解,就了解哪一句就能够。

这儿我罗列了一段代码:

function a () {
  const name = '张三'
  return function b () {
    return name
  }
}
​
console.log(a()()) // 张三

在这段代码中, b函数 便是闭包函数

回调

在往下是 回调 的概念。

这儿其实首要便是阐明晰一点: 函数能够作为参数进行回调运用

模块

结合 闭包回调 ,作者说到了 模块 这样的概念。

运用函数和闭包 时,能够结构一个模块。

那么什么是模块呢? 作者相同给出了界说: 模块是一个供给接口却躲藏状况与实现的函数或目标

只看概念,十分难以了解,我们经过这个代码往来不断看:

let name = '张三' // 此刻 name 为全局变量,能够被恣意修正
function a () {
  // 此刻 name 为函数效果域变量
  // 经过 const b = a() 得到 b 函数,然后进行调用
  // name 不能够被外界修正
  let name = '张三' 
  return function b () {
    return name
  }
}

经过这种模块的办法,来缓解 根据全局变量的编程办法 所带来的问题。

级联

所谓 级联,是作者的称号。

我们更喜欢把它叫做 链式调用,清晰了概念我们应该就知道是什么了。

柯里化

作者专门解说了 柯里化,他对柯里化是这样界说的,他说: 把函数与传递给它的参数相结合,产生一个新的函数。 这叫做柯里化。

这个界说和我们的往常认知不同,在我们的认知中,柯里化指的应该是: 柯里化是一种函数的转化,它是指将一个函数从可调用的 f(a, b, c) 转化为可调用的 f(a)(b)(c)

由于这本书原本是英文的,我们拿到的都是 转译之后的译本,所以关于一些界说,我们客观看待就能够了。

回忆

整个函数最终一块,说到了一个 回忆 的词汇。

这个在我们日常开发中不会这儿称号,这儿的回忆指的其实便是: 把函数的操作成果,保存到一个目标中,然后防止重复运算

书中也拒了一些例子,可是本质上应该是一个类似算法的概念。

总结

那么到这儿,关于函数这一章我们就说完了。

从函数这一章中,其实我们就能够清晰的感受出来: 书中的内容具有必定的落后性(比方:块级效果域)译文导致的一些描绘的误差(比方:柯里化) ,可是 其间也有许多的精华(比方:回来值、递归、闭包)

所以这本书,我们再去看的时分,必定要客观剖析一下才能够。

承继

那么下面我们来看 承继 这个章节

这个章节的内容不算特别多,至少比较于 函数 是这样的。

书中并没有具体的解说 JavaScript 中所有承继的办法,以及代码。

更多的仍是从理念的层次往来不断说的。一起 仍然包含许多落后性

精华

首要本章一开始先清晰了 JavaScript 的承继办法: JavaScript 是弱类型的言语,供给了多种承继的办法,而非传统的类承继

伪类

然后作者说到了 伪类 这样的一个词汇

这个伪类,说白了便是 结构函数,也便是: 首字母大写的一般函数

目标阐明符

这儿作者又说到了一个新的词汇:目标阐明符。

而且罗列出来了一个场景: 当一个函数接纳多个参数时,记住参数的次序十分困难

比方:

maker(f, l, m, c, s)

所以,与其这么写,倒不如这样写:

maker({
  first: f,
  middle: m,
  last: l,
  state, s,
  city: c
})

简略来说,也便是: 把多个参数,合并成一个用目标表明的参数

作者把这样的一种办法叫做: 目标阐明符

原型

原型是承继中十分重要的概念。

可是由于书中的字数限制,作者并没有对原型展开了具体说,而仅仅清晰了两点:

  1. 首要榜首点是根据原型承继的概念: 一个新目标能够承继一个旧目标的特点

  2. 第二个是差异化承继:承继本质上需要具有差异,经过一个小的 demo 进行了清晰

    const person = {
      name: '张三',
      age: 18
    }
    const newPerson = Object.create(person)
    newPerson.name = '李四'
    

    这样,就完结了一个简略的差异化承继。

函数化

在讲完了原型之后,作者说到了一个 函数化 的概念。

作者提出: 原型的承继办法会导致没有私有变量

如果我们运用过 ts 或者其他的 强类型编程言语(比方:java) 那么能够就知道所谓私有变量是什么意思了。

一起作者也经过一段代码来描绘了 如安在原型承继的办法下具有私有变量

这段代码比较杂乱,也有点难以了解。可是在当下的场景中,由于 ES6 之后提出了 class 的概念,所以现在我们其实是有了更简略的办法界说私有变量的。

所以这段代码的含义就不大了。

部件

整个承继最终一块便是 部件

所谓部件指的便是: 目标(这儿是函数)的特点或办法

每一个特点或办法都能够被称作是一个部件。

总结

整个承继的章节,内容并不多。

书中也没有大书特书的写关于原型承继的代码。

所以整个承继章节看下来,不会很累,概念性的东西居多。

数组

承继解说完结之后,新的一个章节叫做 数组

界说

这儿作者关于数组的界说比较有意思,他拿传统数组和 JavaScript 数组 进行了比照:

  1. 针关于传统数组来说:数组是一段线性分配的内存,它经过整数核算偏移并拜访其间的元素

  2. 可是 JavaScript 中的数组不同:

    1. 首要: JavaScript 中并不存在数组相同的数据结构
    2. JavaScript 只不过是供给了 类数组特性的目标

    我们之前说过 js 中除了根本数据类型,其他的都是目标,这儿就能够呼应上了。

数组字面量

这个比较简略,便是经过 [] 界说数组

长度

想要获取数组长度,经过 .length 特点获取

删去

想要删去数组的元素,书中说到了两种办法:

  1. 由于数组本质上是目标,所以仍然能够运用 delete 关键字删去。可是这种删去办法,会导致原来的方位留下 “空洞”
  2. 而第二种办法,是我们比较常用的,那便是经过 splice 进行删去

枚举

所谓的枚举,其实指的便是我们常说的 遍历

而数组的遍历常用的办法首要是两种:

  1. forIn 循环,可是这样无法确保次序
  2. 第二种是 一般的 for 循环,这也是我们常用的办法

其实除了这两种办法之外,我们应该还能想到其他,比方: forEach 办法。

容易混杂的当地

书中专门花了一个末节往来不断界说 数组与目标 容易混杂的当地。

其间中心便是当运用 typeof 的时分,typeof 无法区别出 目标和数组。

所以作者给出了一个办法来进行区别:

function is_array (value) {
  return Object.prototype.toString.apply(value) === '[object Array]'
}

这种办法放到现在仍然可用。

除此之外,其实还有别的一种比较常用的办法,作者没有说到,那便是 instanceof

办法

数组中供给了一些被承继的办法,这些办法,我们放到 办法 这一章去说就能够了。

指定初始值

书中关于数组的最终一个末节解说了 数组初始值 相关的一些东西,首要是有两点:

  1. 榜首点便是: 数组没有预设值。经过 [] 界说数组后,会是一个空数组(本来难道不该该是这样吗?)
  2. 第二点便是:JavaScript 中本质上没有多维数组的概念,所谓的多维数组不过是 以数组为元素 产生的

总结

整个数组的环节,内容仍是比较简略的。

相当于把 JavaScript 中数组的一些中心特性进行了解说。

办法

再往后便是书中中心部分的最终一块了,也便是 办法

书中关于办法的解说首要是经过两部分:

  1. 榜首部分是对办法进行了界说,所谓办法指的是:当一个函数被保存为目标的一个特点时,那么这个函数就被叫做是办法。

  2. 第二部分类似于一个 API 文档。具体的介绍了:

    1. Array
    2. Function
    3. Object
    4. Srting

    这四大类的一些原型承继办法。

这些办法,在 MDN 文档中都能够直接检查,我们这儿就不去具体说了。

中心部分总结

中心部分解说完结之后,其实书中绝大部分 精华 我们就现已悉数整理完结了。

其他

除了大部分的精华之外,书中还说到了一些 其他 的东西,比方:

  1. 正则表达式
  2. 代码风格
  3. 美丽的特性

我们一个一个去说。

正则表达式

首要针关于正则表达式来说。

由于本书并不是一个专门解说正则表达式的书本,所以书中关于正则的内容并不多。许多当地也并不具体。

所以我并不是很引荐我们去看本书中关于正则的部分。

如果我们想要了解正则,倒不如到 MDN 文档 中进行检查。

代码风格和美丽的特性

针关于 代码风格和美丽的特性 这两块,由于 作者对 JavaScript 语法标准的了解,但并不彻底适合于国内环境,所以这两部分关于我们的参阅含义也不是很大。

可是这儿有一句话写的很好,我摘抄了下来,我们能够一起看一下

我们喜欢简略,追求简洁易用,可是当产品缺乏这种特性时,就需要自己去创造它。

附录

最终便是整本书的 附录 部分。

这部分首要是分成了 5 块。

其间前两块:

  1. 毒瘤
  2. 糟粕

比较有意思,我们能够一起来看一下。

至于后三块:

  1. JSLint
  2. 语法图
  3. JSON

不在我们本次的讨论规模之内。

毒瘤

作者把 JavaScript 中十分差劲的特性叫做 毒瘤。意思是: 不除不快

这儿面涉及到的语法十分的多,我们简略过一下即可:

  1. 全局变量:中大型项目中,全局变量能够被恣意修正,会使得程序的行为变得极度杂乱
  2. 效果域:无块级效果域
  3. 主动刺进分号:不合时宜的主动刺进
  4. 保留字:很多的保留字不能够被用作变量名
  5. unicodeunicode 把一对字符视为一个单一的字符,而JavaScript以为一对字符是两个不同的字符
  6. typeoftypeof 的回来总是很 “古怪”
  7. parseInt:遇到非数字时会中止解析,而不是抛出一个过错
  8. +:既能够让数字相加,也能够链接字符串
  9. 浮点数:二进制的浮点数不能正确的处理十进制的小数
  10. NaNNaN 表明不是一个数字,一起它的一些运算也会让人感到古怪
  11. 伪数组:JavaScript 中没有真实的数组,却又存在伪数组的概念
  12. 假值:0、NaN、''、false、null、undefined 在逻辑判别中都会被以为假
  13. hasOwnPropertyhasOwnProperty 是一个办法而不是运算符,所以在任何目标中,他能够被替换掉
  14. 目标:JavaScript 中的目标永远不会是真的空目标,由于它们能够从原型链中获得成员特点

糟粕

作者把一些不符合标准,可是能够运用的代码,叫做 糟粕

首要有:

  1. ==:不判别类型,所以尽量不要运用它
  2. with:改变一段句子的效果域链
  3. eval:传递字符串给 JavaScript 编译器,会使得代码愈加难以阅读
  4. continue:作者发现移除 continue 之后,性能会得到改进
  5. switch 穿越:必须清晰中止 case,否则会穿越到下一个
  6. 缺少块的句子
  7. ++ --:这两个运算符鼓励了一种不行慎重的编程风格
  8. 位运算符:JavaScript 履行环境一般不触摸硬件,所以履行十分慢
  9. function 句子比照 function 表达式:多种界说办法让人困惑
  10. 类型的包装目标:你应该从来没有运用过 new Boolean(false)。所以作者以为:这是彻底没有必要,而且令人困惑的语法

总结

OK,那么到这儿整本书中所有的内容,我们就现已悉数解说完了。

针关于《JavaScript 言语精粹修订版》来说,它的长处是十分清晰的:

  1. 体量小
  2. 初、中级工程师能够经过它快速理清 JavaScript 言语精粹

可是它的缺点也是十分突出:

  1. 内容偏老,针对 ES6 之前的语法
  2. 内容多为直译,导致有时分必定界说和词汇或许会让人很困惑
  3. 书中包含很多的作者主观表述,或许并不必定那么精准,我们需要客观看待。(比方: vue 中就很多的运用到了“糟粕”