• 学习ES6


    es6

    1. 闭包是js的变量,它里面是没有块作用域的情况下,它的一个临时的解决方案。 一旦有了块级作用域,就不需要闭包了;

    2. js中的var -----函数块(函数内)----重复声明、不能控制修改

      es6中的let-------块级(代码块)-----不重复声明、能控制修改

    3. 解构赋值:适合从一个大的结构去取数据

      例子:用在json中:json={a:12,b=5};

      let {a,b}=json;

      数组: arr=[12,5,8];

      let [a,b,c]=arr

    4. 箭头函数:function不要,中间加箭头。简写(作用一)

      • 有且仅有一个参数,()也可以不写。

      • 有且仅有一个语句并且是return,{}也可以不写。

      • 可以修正this.固定this(作用二)

    5. ...(三个点)--------作用:参数收集与展开、数组展开、json展开

      1. 原生对象扩展:

        map------映射,--对应。[34,67]=>[不及格,及格]

        reduce----m=>1------购物车的总金额

        filter

        forEach

      1. json对象:

        JSON.stringify{{a:5,b:68}} => "{"a":5,"b":68}" json变为字符串

        JSON.parse(与上面相反)

      2. babel的作用:使得ES6转为ES5,兼容IE6以下的浏览器。

      3. babel引入方法:1.在线:引入babelser文件,改text/babel------会有延迟,受限

        2.无限编译

        步骤:1. 创建一个新项目

        1. 进入项目地址打开终端

        2. npm init -y

        3. cnpm i @babel/core @babel/cli @babel/preset-env -D

          @babel/core(bebal的核心库) @babel/cli(命令库) @babel/preset-env (环境预设)

        4. 在package.json里“scripts”下添加自己的命令 其中 -d 就是输出的目标地址

          创建一个配置文件.bebalrc是为了声明我用的是哪个预设。然后直接npm run build

      1. src和dest目录都可以自己创建。

       

      bebal使用成功!

      在更老一些的浏览器不支持es6的话,可以添加一条语句:npm i @bebal/polyfill(一种行为:填充);

      它会检测你浏览器的版本,如果特别低,它会把自己的库给浏览器,使得编译成功。

      写es6代码,引入es6编译后的js文件。

      1. 异步操作-ajax

        • ajax("地址",回调函数(){});-------异步操作

        • 异步操作---用户体验好,同时进行多个操作。(用户输入完之后可以立刻检查用户名是否已占用,直接反馈。用户可以在系统检查的时候填写下方的信息),但是由于写回调函数的原因,使得代码太混乱。

        • 为了有异步的功能,同步的简单,防止回调地狱,融合异同步-------Promise、async/await

        • Promise---只是对异步做一个封装(它不能算是异步操作的处理)

        • Promise.all([

          p1,

          p2,

          p3,

          ...

          ]).then

          (同时读取多个文件,需要三个文件同时成功才行,是与的关系)

        • Promise.race------竞速(是或的关系)

        使用Promise.all来避免很深的嵌套。

        1. 面向对象

        • es5构造函数和类分不清

        • es5的继承

        • es6的继承

        es6中多了:class ----类声明、constructor----构造函数、entends----继承、super----超类

        有子类,有专门声明关系的entends,也有super,通过这个可以把参数传进去,自动的把数继承过来;

        有关方法继承,原来的需要prototype,然后new一个父类的实例仍在身上,并且要顺带constructor的属性给修正过来。

      2. 模块系统

      • es6的模块浏览器不支持,需要经过编译---webpack

        步骤:1,导出export(一个变量,一堆变量)

        export let a=3;

        let a,b,c=....;

        export(a,b,c,...);

        export function show(){};

        export class Person{}

        export default 99;

        2,导入import(函数,class)

        import * as mod1 form "xxx";-----------引入所有成员

        import mod1 form "xxx";---------------------引入默认成员

        import (a,b) from "xxx";

        只引入------import "xxx";

        异步引入------let p=import("./mod1");-----简化代码,推荐

        3,webpack编译---在终端

      1. 幂操作(ES7)----**代替pow

      1. (ES7) arr.includes( )---检测是否存在

      2. (ES8) async/await

      3. (ES9) rest/spread(也是用来消除异步操作的,目前未成熟)、异步迭代、Promise.all/race/finally

      4.  

     

     

     

     

     

  • 相关阅读:
    C/C++常用的时间函数
    二维数组动态申请空间以及二维数组函数传参问题
    vc多线程编程
    [转载]_tmain main wmain WinMain
    using namespace std 解释
    [转载]C运行时库函数和API函数的区别和联系
    ZOJ 1013 Great Equipment(DP)
    c++ 运算符优先级表
    c语言输入的一些问题
    c\c++ 随机数函数
  • 原文地址:https://www.cnblogs.com/dys6/p/11318064.html
Copyright © 2020-2023  润新知