ES7-Es8 js代码片段

es7-es8的新特性可参考: es7-es8 

  1 function noRun(){
  2     // es6的Generator函数异步
  3     function* a(){
  4         yield console.log(1)
  5         yield console.log(2)
  6     }
  7     var aa = a()
  8     aa.next()
  9     aa.next()
 10 
 11     // es8的asyns/await异步
 12     const timeout = async ms => {
 13         await new Promise((resolve) => {
 14         setTimeout(resolve, ms);
 15         });
 16     }
 17 
 18     async function asyncP(value, ms, ms2) {
 19         // 顺序执行
 20         await timeout(ms);
 21         console.log(value);
 22         await timeout(ms2);
 23         console.log(ms2);
 24 
 25         // 并行执行
 26         await Promise.all([
 27             timeout(ms),
 28             timeout(ms2)
 29         ]);
 30     }
 31     asyncP('hello world', 5000, 3000);
 32 
 33 
 34     /**
 35      * ES7 求幂运算符**
 36      * 在ES5中 == Math.pow(n,m)
 37      */
 38     console.log(3**2) // 9
 39 
 40     /** 
 41      * ES7 Array.prototype.includes(n, idx)方法
 42      * n是要查找内容,idx是开始查找的下标
 43      * ( 类似indexOf()方法 )
 44     */
 45     let arr = ['react', 'angular', 'vue'];
 46     console.log(arr.includes('react'))  // true
 47     console.log(arr.includes('react', 1))  // false
 48 
 49     /**
 50      * ES8 Object
 51      * ES8 Object.entries() 方法
 52      * 将某个对象的可枚举属性与值按照二维数组的方式返回
 53      * 如果对象的key值是数字,则返回值会对key值进行排序,返回的是排序后的结果
 54      */
 55     Object.entries({ one: 1, two: 2 })    //[['one', 1], ['two', 2]]
 56     Object.entries([1, 2])                //[['0', 1], ['1', 2]]
 57     // key为数字
 58     Object.entries({ 3: 'a', 4: 'b', 1: 'c' })    //[['1', 'c'], ['3', 'a'], ['4', 'b']]
 59     // ES6解构方式结合运用
 60     let obj = { one: 1, two: 2 };
 61     for (let [k,v] of Object.entries(obj)) {
 62         console.log(`${k}: ${v}`);
 63     }
 64 
 65     /**
 66      * ES8 Object
 67      * ES8 Object.values() 方法
 68      * 只返回自己的键值对中属性的值
 69      * 顺序规则与Object.entries()一致
 70      */
 71     Object.values({ one: 1, two: 2 })            //[1, 2]
 72     Object.values({ 3: 'a', 4: 'b', 1: 'c' })    //['c', 'a', 'b']
 73 
 74     /**
 75      * ES8 Object
 76      * ES8 Object.getOwnPropertyDescriptors('参数', 可选-'属性') 方法
 77      * 返回目标对象中所有属性的属性描述符,该属性必须是对象自己定义的,不能是从原型链继承来的
 78      */
 79     let obj = {
 80         id: 1,
 81         name: 'test',
 82         get gender() {
 83           console.log('gender')
 84         },
 85         set grade(g) {
 86           console.log(g)
 87         }
 88     }
 89     Object.getOwnPropertyDescriptors(obj, 'id')
 90     //输出结果为:
 91     // {
 92     //     id: {
 93     //     configurable: true,
 94     //     enumerable: true,
 95     //     value: 1,
 96     //     writable: true
 97     //     }
 98     // }
 99     
100 
101     /**
102      * ES8 String
103      * ES8 字符串填充:padStart(num, '')和padEnd(num, '')
104      * 函数通过填充字符串的首尾部来保证字符串达到固定的长度
105      */
106     'JavaScript'.padStart(8, 'Hi')     //'JavaScript'
107     'JavaScript'.padStart(10, 'Hi')    //'JavaScript'
108     'JavaScript'.padStart(12, 'Hi')    //'HiJavaScript'
109     'JavaScript'.padStart(13, 'Hi')    //'HiHJavaScript'
110     'JavaScript'.padStart(12)          //'  JavaScript'
111 
112     /**
113      * ES8 Function
114      * ES8 函数参数列表与调用中的尾部逗号
115      * 该特性允许我们在定义或者调用函数时添加尾部逗号而不报错。
116      */
117     let foo = function (a,b,c,) {
118         console.log('a:', a)
119         console.log('b:', b)
120         console.log('c:', c)
121     }
122     foo(1, 3, 4, )
123 }
原文地址:https://www.cnblogs.com/csxairou/p/9515240.html