## JS 词法、类型正则表达式
### 预备知识:[unicode]字符集、[Blocks] 编码组ide
- 0 ~ U+007F:经常使用拉丁字符函数
- `String.fromCharCode(num)`编码
- U+4E00 ~ U+9FFF:CJK ChineseJapaneseKorean三合一spa
- 有一些增补区域(extension)code
- U+0000 - U+FFFF:[BMP]字符平面映射)) 基本平面orm
- [Categories]blog
- [space空格系列]ip
- 实践utf-8
- 中文变量名
因涉及到文件的编码保存方式,使用 `\u十六进制unicode`转译(`'厉'.codeCodeAt().toString(16)`)
### Atom 词
#### InputElement
- whiteSpace
可查阅 unicode [space列表](交流V:(cmL46679910))
- Tab:制表符(打字机时代:制表时隔开数字很方便)
- VT:纵向制表符
- FF: FormFeed
- SP: Space
- NBSP: NO-BREAK SPACE(和 SP 的区别在于不会断开、不会合并)
- ...
- LineTerminator 换行符
- LF: Line Feed `\n`
- CR: Carriage Return `\r`
- ...
- Comment 注释
- Token 记号:一切有效的东西
- Punctuator: 符号 好比 `> = < }`
- Keywords:好比 `await`、`break`... 不能用做变量名,但像 getter 里的 `get`就是个例外
- Future reserved Keywords: `eum`
- IdentifierName:标识符,能够以字母、_ 或者 $ 开头,代码中用来标识**[变量](交流V:(cmL46679910))、[函数]、或[属性]**的字符序列
- 变量名:不能用 Keywords
- 属性:能够用 Keywords
- Literal: 直接量
- Number
- 存储 Uint8Array、Float64Array
- 各类进制的写法
- 二进制0b
- 八进制0o
- 十进制0x
- 实践
- 比较浮点是否相等:Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON
- 如何快捷查看一个数字的二进制:(97).toString(2)
- String
- Character
- Code Point
- Encoding
- unicode编(交流V:(cmL46679910))码 - utf
- utf-8 可变长度 (控制位的用处)
- Grammar
- `''`、`""`、``` `
- Boolean
- Null
- Undefind
小做业
- 写一个正则 匹配全部Number直接量
- 完成 UTF8__Encoding 的函数
- 写一个正则表达式来匹配字符串