前端进阶训练营 (视频认真看源码需实践课件齐)

229 阅读1分钟

0418 - JavaScript课件(一小部分)

 

JS 词法、类型

 

预备知识:[unicode] 字符集、[Blocks] 编码组

 

  - 0 ~ U+007F:常用拉丁字符

    - String.fromCharCode(num)

  - U+4E00 ~ U+9FFF:CJK ChineseJapaneseKorean三合一

    - 有一些增补区域(extension)(交流V:(cmL46679910))

  -  U+0000 - U+FFFF:[BMP]字符平面映射)) 基本平面

 

  • [Categories]

 

  - [space空格系列]

 

  • 实践

 

  - 中文变量名

 

    因涉及到文件的编码保存方式,使用 \u十六进制unicode转译('厉'.codeCodeAt().toString(16)

 

Atom 词

 

InputElement

 

  • whiteSpace

 

  可查阅 unicode [space列表]  

  - Tab:制表符(打字机时代:(交流V:(cmL46679910))制表时隔开数字很方便)

  - VT:纵向制表符

  - FF: FormFeed

  - SP: Space

  - NBSP: NO-BREAK SPACE(和 SP 的区别在于不会断开、不会合并)

  - ...

 

  • LineTerminator 换行符

 

  - LF: Line Feed \n

  - CR: Carriage Return \r

  - ...

 

  • Comment 注释

 

  • Token 记号:一切有效的东西

image.png  

  - Punctuator: 符号 比如 > = < }

  - Keywords:比如 awaitbreak... 不能用作变量名,但像 getter 里的 get就是个例外

    - Future reserved Keywords: eum

  - IdentifierName:标识符,可以以字母、_ 或者 $ 开头,代码中用来标识**[变量]、[函数]、或[属性]**的字符序列

    - 变量名:不能用 Keywords

    - 属性:可以用 Keywords

  - Literal: 直接量

    - Number(交流V:(cmL46679910))

      - 存储 Uint8Array、Float64Array

      - 各种进制的写法

        - 二进制0b

        - 八进制0o

        - 十进制0x

      - 实践

        - 比较浮点是否相等:Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON

        - 如何快捷查看一个数字的二进制:(97).toString(2)

    - String

      - Character

      - Code Point

      - Encoding

        - unicode编码 - utf

          - utf-8 可变长度 (控制位的用处)

      - Grammar

        - ''""、``` `

    - Boolean

    - Null

    - Undefind

 

image.png 小作业

  • 写一个正则 匹配所有Number直接量

  • 完成 UTF8__Encoding 的函数

  • 写一个正则表达式来匹配字符串