你不知道的JavaScript(中卷)pdf

图书网 2018年12月29日09:31:331 2.7K
摘要

JavaScript语言有很多复杂的概念,但却用简单的方式体现出来(比如回调函数),因此,JavaScript开发者无需理解语言内部的原理,就能编写出功能全面的程序。然而,JavaScript的这些复杂精妙的概念才是语言的精髓,即使是经验丰富的JavaScript开发者,如果没有认真学习,也无法真正理解语言本身的特性。正是因为绝大多数人不求甚解,一遇到出乎意料的行为就认为是语言本身有缺陷,进而把相关的特性加入黑名单,久而久之就排除了这门语言的多样性,人为地使它变得不完整、不安全。
“你不知道的JavaScript”系列就是要让不求甚解的JavaScript开发者迎难而上,深入语言内部,弄清楚JavaScript每一个零部件的用途。本书介绍了该系列的两个主题:“类型和语法”以及“异步和性能”。掌握了这些知识之后,无论什么技术、框架和流行词语,你都能轻松理解。

你不知道的JavaScript(中卷) 内容简介

JavaScript这门语言简单易用,很容易上手,但其语言机制复杂微妙,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理解。本套书直面当前JavaScript开发人员不求甚解的大趋势,深入理解语言内部的机制,全面介绍了JavaScript中常被人误解和忽视的重要知识点。本书是其中卷,主要介绍了类型、语法、异步和性能。

你不知道的JavaScript(中卷) 目录

版权信息

O'Reilly Media, Inc.介绍

业界评论

前言

第一部分 类型和语法

第1章 类型

1.1 类型

1.2 内置类型

1.3 值和类型

1.4 小结

第2章 值

2.1 数组

2.2 字符串

2.3 数字

2.4 特殊数值

2.5 值和引用

2.6 小结

第3章 原生函数

3.1 内部属性 [[Class]]

3.2 封装对象包装

3.3 拆封

3.4 原生函数作为构造函数

3.5 小结

第4章 强制类型转换

4.1 值类型转换

4.2 抽象值操作

4.3 显式强制类型转换

4.4 隐式强制类型转换

4.5 宽松相等和严格相等

4.6 抽象关系比较

4.7 小结

第5章 语法

5.1 语句和表达式

5.2 运算符优先级

5.3 自动分号

5.4 错误

5.5 函数参数

5.6 try..finally

5.7 switch

5.8 小结

附录 A 混合环境 JavaScript

第二部分 异步和性能

第1章 异步:现在与将来

1.1 分块的程序

1.2 事件循环

1.3 并行线程

1.4 并发

1.5 任务

1.6 语句顺序

1.7 小结

第2章 回调

2.1 continuation

2.2 顺序的大脑

2.3 信任问题

2.4 省点回调

2.5 小结

第3章 Promise

3.1 什么是 Promise

3.2 具有 then 方法的鸭子类型

3.3 Promise 信任问题

3.4 链式流

3.5 错误处理

3.6 Promise 模式

3.7 Promise API 概述

3.8 Promise 局限性

3.9 小结

第4章 生成器

4.1 打破完整运行

4.2 生成器产生值

4.3 异步迭代生成器

4.4 生成器 +Promise

4.5 生成器委托

4.6 生成器并发

4.7 形实转换程序

4.8 ES6 之前的生成器

4.9 小结

第5章 程序性能

5.1 Web Worker

5.2 SIMD

5.3 asm.js

5.4 小结

第6章 性能测试与调优

6.1 性能测试

6.2 环境为王

6.3 jsPerf.com

6.4 写好测试

6.5 微性能

6.6 尾调用优化

6.7 小结

附录 A asynquence 库

附录 B 高级异步模式

你不知道的JavaScript(中卷) 精彩文摘

本规范中的运算法则所操纵的值均有相应的类型。本节中定义了所有可能出现的类型。ECMAScript 类型又进一步细分为语言类型和规范类型。

ECMAScript 语言中所有的值都有一个对应的语言类型。ECMAScript 语言类型包括 Undefined、Null、Boolean、String、Number和 Object。

喜欢强类型(又称静态类型)语言的人也许会认为“类型”一词用在这里不妥。“类型”在强类型语言中的涵义要广很多。

也有人认为,JavaScript 中的“类型”应该称为“标签”(tag)或者“子类型”(subtype)。

本书中,我们这样来定义“类型”(与规范类似):对语言引擎和开发人员来说,类型是值的内部特征,它定义了值的行为,以使其区别于其他值。

换句话说,如果语言引擎和开发人员对 42(数字)和 "42"(字符串)采取不同的处理方式,那就说明它们是不同的类型,一个是 number,一个是 string。通常我们对数字 42 进行数学运算,而对字符串 "42" 进行字符串操作,比如输出到页面。它们是不同的类型。

上述定义并非完美,不过对于本书已经足够,也和 JavaScript 语言对自身的描述一致。

撇开学术界对类型定义的分歧,为什么说 JavaScript 是否有类型也很重要呢?

要正确合理地进行类型转换(参见第4章),我们必须掌握 JavaScript 中的各个类型及其内在行为。几乎所有的 JavaScript 程序都会涉及某种形式的强制类型转换,处理这些情况时我们需要有充分的把握和自信。

如果要将42作为 string 来处理,比如获得其中第二个字符 "2",就需要将它从 number(强制类型)转换为 string。

这看似简单,但是强制类型转换形式多样。有些方式简明易懂,也很安全,然而稍不留神,就会出现意想不到的结果。

强制类型转换是 JavaScript 开发人员最头疼的问题之一,它常被诟病为语言设计上的一个缺陷,太危险,应该束之高阁。

全面掌握 JavaScript 的类型之后,我们旨在改变对强制类型转换的成见,看到它的好处并且意识到它的缺点被过分夸大了。现在先让我们来深入了解一下值和类型。

JavaScript 有七种内置类型:

●空值(null)

●未定义(undefined)

●布尔值(boolean)

●数字(number)

●字符串(string)

●对象(object)

●符号(symbol,ES6 中新增)

图书网:你不知道的JavaScript(中卷)pdf

继续阅读

→→→→→→→→→→→→→→→→→→→→查找获取

程序设计

重构 改善既有代码的设计(中文版)pdf

《重构:改善既有代码的设计》(中文版)所提的这些重构准则将帮助你一次一小步地修改你的代码,这就减少了过程中的风险。很快你就会把这些重构准则和其名称加入自己的开发词典中,并且朗朗上口...
程序设计

数据结构 C语言版 第2版pdf

适读人群 :普通高校电子信息大类本科生学习、考研,同时也适合零售和培训。 采用“案例驱动”的编写模式。书中结合实际应用,将各章按照“案例引入——数据结构及其操作——案例分析与实现”...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:1   其中:访客  1   博主  0
    • 兄台你好
      兄台你好 4

      这本书不错,想要,谢谢