JavaScript 语法和知识

JS 简介
  • NetScape 的 Brendan Eich发明设计,最初命名为 LiveScript
  • 2009年 ES5发布,现在大部分JS都是这个标准
  • 目前最新是2015年发布的 ES6
JS 语法
  • 数据类型
    • Object 对象
      • 以 Key-Value 键值对的形式存在的集合
      • Key都是字符串类型
      • Value 可以是任意类型
    • Array 数组
      • 有序排列的集合
      • 值可以是任意类型
      • 遍历数组可以使用 Map(返回新数组) 或 ForEach(不返回新数组)
    • String 字符串
      • 可以是任何由单引号或双引号定义的类型
    • Number 数字
      • 数字可以是任何表示数字的类型
    • Boolean 布尔
      • 值只有两个:true / false
    • Map 映射
      • Map 和 Set 是ES6中新增的类型
    • Set 集合
    • null / undefined
      • null 表示一个值为空
      • undefined 表示示定义,通常用于比较不存在的属性或值
  • 控制流
    • while
    • while (a<10){
          a++;
      }
    • for
    • for (let i=0; i<10; i++){
          console.log(i)
      }
    • Array
    • const arr=[1,2.3];
    • Map
    • const arr2= arr.map( d=> d+1);
    • forEach
  • 函数
    • 定义
      • 命名函数
      • 匿名函数
    • 变量作用域
      • var 定义的变量在各自函数内部起作用
      • const、let 变量为块级作用域(块级作用域指每一个{}中的代码块)
      • 全局作用域
        • 不指定var/const/let 的变量都自动提升为全局变量,绑定到Window对象
    • 高阶函数
      • 接收另一个函数作为参数的函数称为高阶函数
      • CallBack--回调
      • function first(a,b,callback){
            return callback(a,b);
        }
        function second(c,d){
            return c+d;
        }
    
    - 闭包
    
    - - 函数的返回值可以为函数
    
      - 所有的参数和变量都保存在返回函数中
    
      - 当调用返回函数时才会执行所有的运算逻辑
    
      - ```
    function closureFunc(a,b){
        return function(i){
            return Math.pow(a+b,i);
        }

    - 用途(匿名自执行函数、封装、结果缓存等待调用)

  - 特殊对象

  - - 

- 特殊对象

- - JSON、对象的序列化 / 反序列化操作
  - JSON.stringify 序列化
  - JSON.parse 反序列化

##### JS 进阶

- 事件循环(Event Loop)

- - 主线程不断重复获取执行消息、再获取执行不断循环的机制称为事件循环
  - 堆 :大块非结构化内存区域,储存对象、数据
  - 栈 :调用栈,储存该次循环待主程序执行的任务
  - 队列 :事件队列,先进先出被推入调用栈中

- 原型链

- - prototype
  - "__proto__"
  - constructor
  - 应用场景:继承、代码复用

- 浏览器储存

- - Cookies

  - - 用于与服务端通信
    - 储存量小

    Local Storage

    - 储存量比cookies大
    - 只能储存字符

    Session Storage

    - 只存在于当前Session,关闭浏览器就没了

    IndexedDB

    - 相当于浏览器上的SQL数据库
    - 更大的储存空间
    - API较难掌握

- 跨域

- - 客户端与不同源的服务器通信
  - CORS:跨域资源共享
  - JSONP:基于<script>标签可以跨域特性,只能用于GET请示
  - iframe:通过<iframe>标签在一个页面展示不同源数据
  - 反向代理

- Webpack打包

- - 将不同类型的源文件编译打包成静态文件
  - 特点:统一管理、模块化
如果觉得我的文章对你有用,请随意赞赏