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)  
  })
},
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354