ES7语法,常用知识总结

本文介绍了ES8引入的一些JavaScript新特性,包括数组方法如`includes`、`flat`和`flatMap`,类型数据的`Symbol.prototype.description`,可选绑定和新的运算符,以及改进的异步编程工具如`async/await`和`forawaitof`。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       1. Array.prototype.includes()   用来判断一个数组是否包含一个指定的值,如果包含则返回 true,只能判断简单类型的数据,无法判断复杂类型的数据

          Array.prototype.flat() 扁平化数组(其参数为数组层级,默认1),如果设置如果设置为 Number.Infinity 最终返回的都是一个一维数组。

          Array.prototype.flatMap() ,是 Array.prototype.flat()与Array.prototype.map()的合体 。

          Symbol.prototype.description Symbol ,类型数据增加了一个只读属性 description,其值同初始化 Symbol 时传入的值,增加这个属性主要是提供了一种更友好的判断 Symbol 值的方式

         

          可选的Catch Binding  ,也就是说 catch 可以省略参数的书写

        2.幂运算符(**)   类似于Math.power(2,3):表示2的三次方

        3.空值合并运算符(??) ,当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧

        4. 可选链操作符"?." , 允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效,

                              在引用为 null 或者 undefined 的情况下不会引起错误,该表达式短路返回值是 undefined。

                              与函数调用一起使用时,如果给定的函数不存在,则返回 undefined

                                可选链不可用于赋值。

        ES8:

            Object.values(),返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键值。

            Object.entries() 返回一个数组,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键值对

            Object.fromEntries() 返回一个对象,bject.entries()反向操作 ,它还可以快捷地把 Map 转换为 Object

            Object.getOwnPropertyDescriptors()  用于获取一个对象的所有自身属性的描述符

            String.prototype.padStart(targetLength [, padString])  把指定字符串填充到字符串头部,返回新字符串。

            String.prototype.padEnd(targetLength [, padString])   把指定字符串填充到字符串尾部,返回新字符串。

            String.prototype.trimStart() 移除字符串头部空格

            String.prototype.trimEnd()   移除字符串尾部空格

            String.prototype.replaceAll() ,返回一个新字符串,新字符串中所有满足 pattern 的部分都会被 replacement 替换

            async/await  是比 Promise 更优雅的异步编程方案,添加了 async 的函数在执行后都会自动返回一个 Promise 对象。

                         async/await 需要在 catch 中才能捕捉到reject()注入的内容

            for await of  类似Promise.all(),都是为了批量执行异步函数并返回结果

            Promise.prototype.finally() 无论 Promise 对象最终是 fulfilled 还是 rejected 状态,都会触发finally()回调。

            Promise.any() , 接收一个 Promise 数组,返回第一个 fulfilled 状态的 Promise 结果

                            不会因为某个 Promise 变成 rejected 状态而结束,必须等到所有参数 Promise 变成 rejected 状态才会结束


 

     -->

    <script>

      console.log(Object.values({ name: "张三", age: "25" })); // 张三,25

      console.log(Object.entries({ name: "李四", age: 58 })); //[name: "李四", age: 58 ]

      console.log(Object.getOwnPropertyDescriptors({ name: "王五", age: 89 })); //输出 对象具体信息属性

      ({ name: "张三", age: 46 });

      console.log(

        Object.fromEntries([

          ["name", "张三"],

          ["age", "19"],

        ])

      ); //{ name: "张三", age: "25" }

    //   const map = new Map();

    //   map.set("name", "A");

    //   map.set("age", 18);

    //   console.log(map); // {'name' => 'A', 'age' => 18}

    //   const obj = Object.fromEntries(map);

    //   console.log(obj); // {name: 'A', age: 18}

      //   loadImg(

      //     "https://copyright.bdstatic.com/vcg/creative/cc9c744cf9f7c864889c563cbdeddce6.jpg@h_1280"

      //   ).finally(() => {

      //     console.log("end");

      //   });

    //   const arr = [1,2,3,[4,[7,8,[9]]]]

    //   console.log(arr.flat()); //[1,2,3,4[7,8],[9]]

    //   console.log(arr.flat(Infinity)); //[1,2,3,4,7,8,9]

//         const arr = [1,2,3,4]

//         console.log(arr.map((item,index)=>[index,item]))//[0,1],[1,2],[2,3],[3,4]

//         console.log(arr.flatMap((item,index)=>[index,item])//[0, 1, 1, 2, 2, 3, 3, 4]

// );

        // var str = ' zss '

        // console.log(str);

        // console.log(str.trimStart());

        // console.log(str.trimEnd());

        // const version = Symbol('1.0.0');

        // console.log(version.toString() === 'Symbol(1.0.0)'); // true,ES10之前借助toString()做判断

        // console.log(version.description === '1.0.0'); // true,现在用description作为判断依据更为友好

        // console.log(0 ?? 1);//0   只有左侧值为null 或者underfined 才返回右侧值

        // console.log(0 || 1);//1

        //

        // const data = {

        //     success :true

        // }

        // // data.getAge();//报错

        // if(data.getAge){

        //     data.getAge()

        // }

        // 举例 ?.

        // const res1 = data.getAge?.()

        // const res2 = data.children?.[0]?.getAge?.()

        // console.log(res1,res2);


 

        var str = '我是天才,非常牛的天才'

        console.log(str);

        console.log(str.replace('天才','扭蛋'));

        console.log(str.replaceAll('天才','笨蛋'));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值