ES6的语法笔记

参考 遍历 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) }) },

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):