《JavaScript语言精粹》
文章目录
- 运行环境
- 第一章:精华
- 第二章:语法
- 语法图(Syntax diagrams)
- 数字(Numbers)
- 字符串(Strings)
- 语句(Statements)
- 表达式(Expressions)
- 第三章:对象
- 对象字面量
- 检索
- 更新
- 引用
- 原型
- 反射
- 枚举
- 删除
- 减少全局变量污染
- 第四章:函数
- 函数对象
- 函数字面量
- 调用
- 方法调用模式
- 函数调用模式
- 构造器调用模式
- Apply 调用模式
- 异常
- 扩充类型的功能
- 递归
- 闭包
- 回调函数
- 模块
- 级联
- 柯里化
- 记忆
- 第五章:继承
- 第六章:数组
- 删除
- 遍历
- 第七章:正则表达式
- 第八章:方法
- 第九章:代码风格
- 第十章:优美的特性
- 糟粕
- 全局变量
- 自动插入分号
- typeof
- 编译原理
- 回顾
- 源代码
- 词法分析
- 语法分析
- 语义分析
- 中间语言生成
- 目标代码生成与优化
- JavaScript编译原理
- source => tokens
- tokens => abstract syntax tree
- abstract syntax tree => high-level intermediate representation
- execute
- 作用域
- ES6以后引入的let/const
- 编译器和解释器
运行环境
我使用的VSCODE运行的,装了node.js:
https://www.runoob.com/nodejs/nodejs-install-setup.html
装了这些插件:

然后就可以在html文件运行js(chrome)或者直接运行js(node)

第一章:精华
本书的目的就是要揭示JavaScript的精华。本书很少涉及DOM(文档对象模型)。
辅助教程:https://www.runoob.com/js/js-tutorial.html
第二章:语法
语法图(Syntax diagrams)
推荐:https://www.jianshu.com/p/aa8d3e914ab3
语法图(Syntax diagrams )又叫铁路图(railroad diagrams)是描述形式文法的一种方式。它是巴科斯范式或扩展巴科斯范式的图形化表示。
铁路图(railroad diagram)规则:
1.从左边界开始沿着轨道去到右边界。
2.沿途,你将在圆框中遇到的是字面量,在方块中遇到的是规则或者描述。
3.任何沿着轨道能走通的序列都是合法的。
4.任何不能沿着轨道走通的序列都是非法的。
5.每个末端只有一个竖条的铁路图允许在任何一对标记中间插入空白。而在末端有两个竖条的铁路图是不允许的。
每个图都有一个起始点和一个终点。这个图通过穿过其他的非终结符和终结符描绘了这些两点之间的可能路径。终结符用圆形区域表示,同时非终结符用方形区域表示。
数字(Numbers)
JavaScript 只有一个数字类型。它在内部被表示为 64 位的浮点数,和 Java 的 double 数字类
型一样。它没有分离出整数类型,所以1和1.0 的值相同。100与1e2相同。
NaN 是一个数值,它表示一个不能产生正常结果的运算结果。 NaN 不等千任何值,包括它自
已。你可以用函数 isNaN(number) 检测 NaN; Infinity 则表示所有大于 1.79769313486231570e+308 的值。
同时, JavaScript 有一个对象 Math, 它包含一套作用于数字的方法。例如,可以用 Math.floor(number) 方法把一个数字转换成一个整数。
字符串(Strings)
字符串字面最可以被包在一对单引号或双引号中,它可能包含0个或多个字符。JS中的所有字符都是 16 位的。
JavaScript 没有字符类型。要表示一个字符,只需创建仅包含一个字符的字符串即可。
var hbh = "\u0041";
alert(hbh.length);
alert(hbh);
如上,字符串自带length属性,\u为unicode编码,后跟4位16进制数,所以打印出来为:1、A
若改为:var hbh = "\u0041" + '\u0042',注意单引号双引号无区别,打印结果为2、AB
字符串是不可变的。一且字符串被创建,就永远无法改变它。两个包含着完全相同的字符且字符顺序也相同的字符串被认为是相同的字符串。
语句(Statements)
一个编译单元包含一组可执行的语句。在 Web 浏览器中,每个
