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

时间: 2024-10-31 20:55:25

ES7-Es8 js代码片段的相关文章

五年干货分享!前端开发中最常用的JS代码片段

很多网友私信我,说学到js就开始卡壳了,甚至初略的看了一下js,就跳过开始学习框架之类的.这里要提醒你,js是前端的重中之重,如果你忽视了,后果不堪设想! 学好,并熟练的运用这门编程语言真的很难吗?本篇文章为大家总结了一些前端开发中最常用的JS代码片段,希望能对大家的学习以及工作上都能有所帮助,有所收获. HTML5 DOM 选择器 javascript 代码 // querySelector() 返回匹配到的第一个元素 var item = document.querySelector('.i

Atom编辑器折腾记_(15)JS代码片段补全(插件:javascript-snippets)

题外话 这款插件就比較重量级了-.用熟悉了写原生JS的效率要提升非常多--并且,不仅支持JS还包括了nodejs snippet javascript-snippets 插件作者: zenorocha Github地址 : https://github.com/zenorocha/atom-javascript-snippets 内置了丰富的JS snippet . 并且也非常好理解和记忆-耍多了会上手的 安装 在设置中心搜索安装 代码片段(Tab或者Enter补全) Console命令 [cd

前端开发常用js代码片段

HTML5 DOM 选择器 // querySelector() 返回匹配到的第一个元素var item = document.querySelector('.item');console.log(item); // querySelectorAll() 返回匹配到的所有元素,是一个nodeList集合var items = document.querySelectorAll('.item');console.log(items[0]); 阻止默认行为 // 原生jsdocument.getEl

前端开发中最常用的JS代码片段

HTML5 DOM 选择器 // querySelector() 返回匹配到的第一个元素 var item = document.querySelector('.item'); console.log(item); // querySelectorAll() 返回匹配到的所有元素,是一个nodeList集合 var items = document.querySelectorAll('.item'); console.log(items[0]); 阻止默认行为 // 原生js document.

AJAX相关JS代码片段和部分浏览器模型

在.net开发中,充分利用免费控件是好事情,同样的,在php的开放中,能使用ajax的类库是可以,但是如果不能修改控件或者类库达到自己的需求,就要动用JS大法了,前提是研究好浏览器模型 的各种对象的方法属性.尤其是熟悉CSS+HTML就会做的很酷.就JS语言本身来说要求不高. 1.动态删除Table 里面内容技巧,不需要写太多代码,一行: tb.removeNode(true)3g.mlybyby.com 2.动态增加行,除了CreateElement方法,还可以这样比较短小: 3.在DIV中动

JS代码片段:一个日期离现在多久了

var dateDiff = function(hisTime,nowTime){ if(!arguments.length) return ''; var arg = arguments, now =arg[1]?arg[1]:new Date().getTime(), diffValue = now - arg[0].getTime(), result={ isToday:false }, minute = 1000 * 60, hour = minute * 60, day = hour

js代码片段

//解析xmlvar sc = "<window left='0' top='0' right='500' bottom='300' ><item playinfotype='html' type='localfile' filename='ct_1399954818700.txt' entryeffect='no_effect' entryspeed='NORMAL' staytime='5' backgroundcolor='#000000' /></windo

JS代码片段:判断一个元素是否进入可视区域

// Determine if an element is in the visible viewport function isInViewport(element) { var rect = element.getBoundingClientRect(); var html = document.documentElement; //在IE中,默认坐标从(2,2)开始计算,导致最终距离比其他浏览器多出两个像素,我们需要做个兼容. var top = document.documentElem

回归 | js实用代码片段的封装与总结(持续更新中...)

上一次更博还是去年10月28号了,截至今天已经有整整4个月没有更新博客了,没更新博客不是代表不学了,期间我已经用vue做了两个项目,微信小程序做了一个项目,只是毕竟找到工作了,想偷偷懒,你懂的. 过年期间一直在关注js片段代码,虽然这个时代前端框架横行,大量上层工具层出不穷,比如http请求的封装:react的fetch.vue的axios(vue官方已经不用vue-resource了):知名的lodash,和最近发现的30-seconds-of-code,在我看来这些都是宝贝.言归正传,今天主