ES6的语法笔记

作者: 喆哲 | 来源:发表于2020-06-08 17:13 被阅读0次

    参考

    • 遍历 forEach

    let Arr = [12, 'config', '19', 'WE', 16, -7]
    Arr.forEach((value, index, arr) => {
    value, index, arr
    // 遍历的元素,下标,原数组
    })
    
    • 过滤 filter

    // newArr:新数组,val:遍历的元素,返回true则加入到新数组
    let newArr=Arr.filter((val) => {
      return val < 17   
    })
    console.log(newArr) 
    
    • 映射 map

    // newAcc :新数组,val:遍历的元素,计算后返回到新数组
    let Acc = [132, 321, 34, 366, 298]
    let newAcc = Acc.map((val) => {
      return val + 100
    })
    console.log(newAcc)  
    
    • 汇总reduce

    // new2Arr:新数组,val:遍历的元素, perVal上一次的返回值,0:perVal的初始值
    let new2Acc = Acc.reduce((perVal, val) => {
      return perVal + val
    }, 0)
    console.log(new2Acc) 
    
    • 构造函数

      class Uver{
        constructor(name,age){
            this.name = name
            this.age = age
        }
        shoSy(){
           console.log(this.name); 
        }
        shoSt(){
            console.log(this.age)
        }   
    }
    var u2 = new Uver('pengjj','28')
    u2.shoSy();
    u2.shoSt();
    
    • 数组方法

    // 返回一个布尔值,表示某个数组是否包含给定的值,第二个参数表示搜索的起始位置,负数则表示倒数的位置
    [1, 2, 3].includes(4);     // false
    [1, 2, NaN].includes(NaN); // true
    [1, 2, 3].includes(3, -1); // true
    
    // 覆盖,将3号位复制到0号位
    [1, 2, 3, 4, 5].copyWithin(0, 3, 4)
    // [4, 2, 3, 4, 5]
    // 将2号位到数组结束,复制到0号位
    var i32a = new Int32Array([1, 2, 3, 4, 5]);
    i32a.copyWithin(0, 2);
    // Int32Array [3, 4, 5, 4, 5]
    
    // 对象转数组
    let arrayLike = {
        '0': 'a',
        '1': 'b',
        '2': 'c',
        length: 3
    };
    let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
    
    • 字符串方法

    // endswith 尾部验证 startswith 头部验证,includes是否拥有,第二个参数,表示开始搜索的位置,返回布尔值
    let str = 'helloword'
    let arr1 = str.endsWith('word')
    let arr2 = str.startsWith('l')
    let arr3 = str.includes('l',4)
    console.log(arr2, arr1, arr3 )
    
    // 字符串遍历
    for (let codePoint of 'foo') {
      console.log(codePoint)
    }
    // "f"
    // "o"
    // "o"
    
    // 返回字符串给定位置的字符
    'abc'.charAt(0) // "a"
    
    // 头部和尾部补全,第一个参数用来指定字符串的最小长度,第二个参数是用来补全的字符串的值。
    'xxx'.padStart(2, 'ab') // 'xxx'
    'xxx'.padEnd(2, 'ab') // 'xxx'
    '1'.padStart(10, '0') // "0000000001"
    
    • 展开运算、函数运算

    // 展开运算
    let acc =[1,2,3]
    console.log(...acc);
    // 函数运算
    let svr = s => s + 20
    console.log(svr(3)) // 23
    
    • 解构赋值

    // 解构赋值
    let [a, b, c] = [12, 22, 23];
    console.log(a, b, c)
    // 把对象里面的值单独拿出来
    let qwer = { foo, bar } = { foo: 'aaa', bar: 'bbb' };
    console.log(qwer ,foo, bar);
    // 剩余
    let [ac, ...bc] = [1, 2, 3];
    console.log( ac);
    console.log( bc);
    
    • Promise

    1、主要解决回调地狱等一些复杂的异步操作,且链式编程所带来的状态和维护都会比嵌套更好
    2、resolve, reject通过Promise的参数传入,其本身也是函数
    3、resolve()成功回调到then(),reject()失败回调到catch(),也可以再then里面传两个函数,第一个为成功回调第二个为失败回调,不需要使用catch(), 也可以直接用throw ‘err’来抛出异常
    4、将异步请求的代码和处理代码使用.then来分隔

        // setTimeout函数作为Ajax请求,上一个回调执行完成所有的业务代码之后再执行下一个Ajax回调
    PromiseClick () {
      new Promise((resolve, reject) => {
        // 第一次网络请求
        setTimeout(() => {
          resolve() 
        }, 2000)
      }).then(() => {
        // 第一次网络请求后处理代码
        console.log('is work');
        console.log('is work');
        console.log('is work');
        console.log('is work');
        return new Promise((resolve, reject) => {
          // 第二次网络请求
          setTimeout(() => {
            resolve()
          }, 2000)
        })
      }).then(() => {
        // 第二次网络请求后处理代码
        console.log('is work2');
        console.log('is work2');
        console.log('is work2');
        console.log('is work2');
        return new Promise((resolve, reject) => {
          // 第三次网络请求
          setTimeout(() => {
            reject('回调失败') // 回调失败时执行reject
          }, 2000)
        })
      }).then(() => {
        // 第三次网络请求后处理代码
        console.log('is work3');
        console.log('is work3');
        console.log('is work3');
        console.log('is work3');
      }).catch((err) => { // 可以传参数到处理代码   
      // 也可以再.then里面传两个函数,第一个为成功回调第二个为失败回调,不需要使用catch().
        console.log(err);  
      }) 
    },
    

    Promise里面的all方法,主要解决多个异步必须要全部完成才能往下执行的情况,results会作为一个数组在.then的参数里,依次拿到每个异步的数据

    allPromiseClick () {
      Promise.all([
        new Promise((resolve, reject) => {
          setTimeout(() => {
            console.log('1')
            resolve('1')   
          }, 2000)
        }),
        new Promise((resolve, reject) => {
          setTimeout(() => {
            console.log('2')
            resolve('2')   
          }, 1000)
        })
      ]).then((results) => {
        console.log(results)  
      })
    },
    

    相关文章

      网友评论

        本文标题:ES6的语法笔记

        本文链接:https://www.haomeiwen.com/subject/yhnhjhtx.html