你不知道的JavaScript(中卷)pdf

图书网
9193
文章
1119
评论
2018年12月29日09:31:33 评论 376阅读6分39秒
摘要

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

恭喜,此资源为免费资源,请先
声明:本站所有资源收集于互联网,只做学习和交流使用,版权归著作人和出版社所有,请在下载后24小时之内自觉删除,若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系站长删除,我们将及时处理!
继续阅读
  • 我的微信
  • 扫一扫加好友
  • weinxin
  • 微信公众号
  • 扫一扫关注
  • weinxin
C++ Primer Plus(第6版 中文版)pdf 程序设计

C++ Primer Plus(第6版 中文版)pdf

《C++ Primer Plus(第6版)中文版》可以说是一本面向从未学习过C语言甚至是从未学习过编程的人的入门书籍,它的首章从基础内容讲起,先介绍了传统编程的规则,后面才着重讲解...
精通Spring MVC 4pdf 程序设计

精通Spring MVC 4pdf

本书带领我们展开一次有意思的旅行,从开发自己的Web应用开始, 到将其部署到云中。首先,我们会使用Spring Tool Suite和Spring Boot生成自己的Spring项...
Python地理空间分析指南(第2版)epub 程序设计

Python地理空间分析指南(第2版)epub

用非常流行的Python语言做地理空间分析; 学习高效、易学的地理空间分析指南; 书中含有典型且非常实用的开发案例,帮助读者快速掌握相关技能; 图文结合,将学习效率大大提高。
匿名

发表评论

匿名网友 填写信息

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