学习资料来源:MDN文档:(MDN-JS)[https://developer.mozilla.org/zh-CN/docs/Web/JavaScript]

数据

  1. 定义数据
  • var,let.const
    • 定义变量的关键词
    • var有变量提升的问题,变量位置在解释前全部提前到文件开头解析
  1. 数据类型
    1. 布尔
      1. bool
        • true/false
    2. 数字
      1. Number
        • int+float
      2. BigInt
        • 任意精度数字
    3. 字符
      1. String
        • 静态字符数组(动态数组详见于数据容器部分)
    4. 空值
      1. null
        • 类似C的空指针,这个变量在栈上只有key,value没有任何数据
        • 关于栈内存,详件于(计算机原理)
      2. undefined
        • 类似null,区别在于null是人为留空,undefined是解释器自己留空
    5. 其他
      1. object(不能算是基础数据类型)
        • JavaScript,{}就能创建一个对象,写起来跟面向对象差不多,不需要写class和this
      2. symbol
        • 不懂,没用过
  2. 类型转换
    1. 显式转换
      1. 转数字:
        • 严格:Number()
        • 严格:BigInt()
        • 宽松:parseInt()/parseFloat()
      2. 转字符串:
        • String()
      3. 转布尔值:
        • Boolean()
      4. 转对象
        • Object()
    2. 隐式转换
      • 懒得看,遇到问题了再记录
  3. 类型判断
    1. isFinite()
      • 有限数
    2. isInteger()
      • 整形
    3. isNaN()
      • NaN
    4. isSafeInteger()
      • 安全整形
  4. 数据容器
    1. 动态数组(list对象)
      1. 属性
        • 长度:length()
      2. 方法
        1. 增
          • 压栈:push()
          • 拼接:concat()
          • 插入:splice(,,)
        2. 删
          • 出栈:pop()
          • 去除:splice(起,个数)
        3. 改
          • 替换:splice(起,个数,新元素)
          • 反转:reverse()
          • 排序:sort(比较函数)
        4. 查
          • 首个:find(条件)
          • 截取:slice(m,n)
          • 过滤:fliter(条件)
          • 重组:map(条件)
        5. 遍历
          • 循环:for_of
          • 循环回调:forEach(条件)
    2. 动态字符(string对象)
      1. 属性
        • 长度:length()
      2. 方法
        1. 增
          • 拼接:concat()
          • 填充:padStart()/padEnd()
        2. 删
          • 去白:trim()/trimStart()/trimEnd()
        3. 改
          • 大小:toLowerCase()/toUpperCase()
          • 切片:slice(m,n)
        4. 查
          • 正则:match()
          • 分隔:split()
          • 首位:startWith()/endWith()
    3. 动态集合(set对象)
      1. 属性
        • 个数:size()
      2. 方法
        1. 增
          • 增单:add(x)
        2. 删
          • 删除:delete(x)
          • 清空:clear()
        3. 改
        4. 查
          • 包含:has(x)
        5. 遍历
          • 循环:for_of
          • 转[]:Array.from()
    4. 动态字典(map对象)
      1. 属性
        • 个数:size()
      2. 方法
        1. 增
          • 增单:set(k,v)
        2. 删
          • 删除:delete(k)
          • 清空:clear()
        3. 改
          • 覆盖:set(k,v)
        4. 查
          • 获取:get(k)
          • 查存:has(k)
        5. 遍历
          • 循环:for_of
    5. 动态对象(object对象)
      1. 属性
        • 统计:Object.keys(o).length
      2. 方法
        1. 增
          • 新增:o.key = 值
          • 合并:Object.assign(目标, 源)
        2. 删
          • 删除:delete o.key
        3. 改
          • 覆盖:o.key = 值
        4. 查
          • 取值:o.key / o['key']
          • 查存:'key' in o / o.hasOwnProperty('key')
          • 键值列表:Object.keys(o)/values(o)/entries(o)
        5. 遍历
          • 循环:for_in
  5. json
    1. json转js:JSON.parse(str)
    2. js转json:JSON.stringify(value)

函数

  1. 流程控制
    1. 条件
      • if -> else if -> else
      • switch case
    2. 循环
      • for
      • while
    3. 错误处理
      • try catch
  2. 函数
    1. function关键字
    2. 匿名函数
      • 相较于具名函数
        • 少了一份name引用
        • 没有函数声明提升的问题
    3. 闭包
      • 作用域链:
        • 变量:子级可用祖级,反之不行
        • 函数:同上
      • 生命周期
        • 创建:祖级调用,创建沙盒环境,子级创建时
        • 运行:沙盒创建完后,调用自己时运行
        • 消除:与祖级弱相关,无引用则消除
    4. 箭头函数
      • 类型:
        • 匿名函数的一种
    5. 预定义函数
      • JavaScript语言的顶层工具函数