美文网首页
ES7-ES11的新特性

ES7-ES11的新特性

作者: JX灬君 | 来源:发表于2021-07-10 08:45 被阅读0次

    ES11
    // 1.在类内部定义私有变量 #+变量

    class myClass {
        #classdata = '参数1'
        getclass(){
            console.log(this.#classdata);
        }
    }
    const my_class = new myClass()
    my_class.getclass() // 输出 ‘参数1’
    console.log(my_class.#classdata);  // error : Uncaught SyntaxError: Private field '#classdata' must be declared in an enclosing class
    

    // 2.globalThis

    // 不同环境下全局对象名称不一样
    // 浏览器全局变量 = windows
    // Node全局变量 = global
    // web worker = self
    // globalThis 能够在不同环境中提供正确的全局对象
    // windows 调用alert
    window.alert(hello)
    if (typeof globalThis.alert === 'function'){
      globalThis.alert('hello');
    }
    

    // 3.管道运算符

    // 一个参数,不断经过函数处理,结果又被当作参数传给下个函数
    // 管道运算符的感觉就像一条流水线,从上到下,最后输出结构
    const double = (n) => n * 2;
    const increment = (n) => n + 1;
    // 普通写法
    double(increment(double(double(5)))); // 42
    // 使用管道操作符 `|>`
    5 |> double |> double |> increment |> double; // 42
    

    // 4.动态导入

    // 以前先import()导入,再使用
    // 新特性可以动态导入使用,因为 import() 会与模块一起返回一个 Promise
    const utils = await import('utils');
    

    // 5. BigInt

    // 在处理大于 9007199254740991 的数字时应该用 BigInt。 BigInt 在数字末尾用 n 表示。
    9_007_199_254_740_991 + 2; // 9007199254740992
    BigInt(9_007_199_254_740_991) + BigInt(2) // 9007199254740993n
    

    // 6. matchAll

    // 要用正则表达式查找所有的匹配项,可以用 match 来得到所有子字符串
    // 既需要子字符串又需要索引,可以用 matchAll 并进行重复匹配
    // ES11 用法
    const matches = 'Here are some numbers: 3 15 32'.matchAll(/\d+/g);
    for (const match of matches) {
      console.log(match);
    }
    // 输出:
    // ["3", index: 22, input: "Here are some numbers: 3 15 32", groups: undefined]
    // ["15", index: 24, input: "Here are some numbers: 3 15 32", groups: undefined]
    // ["32", index: 27, input: "Here are some numbers: 3 15 32", groups: undefined]
    // ES11 之前
    let regex = /t(e)(st(\d?))/g;
    let string = 'test1test2test3';
    [...string.matchAll(regex)];
    // 或
    Array.from(string.matchAll(regex));
    

    // 7.Promise.allSettled

    // Promise.all 都成功,才会成功,有一个失败,就返回失败。
    // Promise.allSettled, 一旦结束,状态总是fulfilled,不会变成rejected。
    // Promise.race 只要有返回值,立马停止其他请求。
    // Promise.all 一个请求失败了就会报出异常,Promise.allSettled 不管请求成功或失败都会把结果返回过来
    const promises = [Promise.resolve(1), Promise.reject(2)];
    const [result1, result2] = await Promise.allSettled(promises);  // 1
    

    相关文章

      网友评论

          本文标题:ES7-ES11的新特性

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