ES6

  1. 变量的改变

    let const

  2. 字符串新增方法

    let str = 'react';

    str.includes('re') // true

    str.repeat(3) // reactreactreact

    str.startsWith('re')  // true,参数2为查找的位置

    str.endsWith('p', 4)  // true,参数2为查找的字符串长度

  3. 键值对重名简写

    function people(name, age) {
      return {
        name,
        age
      };
    }

  4. 对象字面量简写

    getName () { // 省略冒号(:) 和function关键字
      console.log(this.name)
    }

  5. 对象合并

    Object.assign({}, obj1, ob2);

  6. 数据解构和rest参数

    const people = {
      name: 'cs',
      age: 25
    }
    const { name, age } = people; // 'cs', 25

    // 数组解构
    const arr = [1, 3, 4];
    const [a, b, c] = arr; // 1, 3, 4

    // rest参数,返回的是一个对象
    const obj = {a: 2, b: 3, c: 4, d: 5};
    const {a, ...rest} = obj; // 2 { b: 3, c: 4, d: 5 }

  7. 数据展开

    // 展开对象(和上面Object.assign()一样,也是对象合并)
    const obj = {a: 2, b: 3}
    console.log({...obj, c: 5});// {a 2, b: 3, c: 5}
    // 展开数组
    const arr = [1, 3, 4]
    console.log([...arr, 5]); // [1, 3, 4, 5]

  8. Promise

    // resolve、reject的使用
    function getNum() {
    const randomNum = Math.ceil(Math.random() * 10);
      return new Promise((resolve, reject) => {
        if (randomNum > 5) {
          resolve('大于5');
        } else {
          reject('小于5');
        }
      })
    }
    getNum().then((result) => {
      console.log('success', result);
    }).catch((err) => {
      console.log('err', err);
    });

  9. Set

    // Set实例的常用方法和属性add,delete,clear,has、size
    const s = new Set(['A', 'B', 'C']);
    console.log(s); // Set { 'A', 'B', 'C' }
    console.log(s.has('A')) // true,bool值
    console.log(s.size) // 3
    console.log(s.clear()) // Set {}
    console.log(s.delete('A')) // true,bool值

    const a =[1, 2, 3]
    const b = [2, 3, 4];
    // 并集
    const s = Array.from(new Set([...a, ...b])); // [ 1, 2, 3, 4 ]
    // 交集、差集
    const bSet = new Set(b);
    const interestSet = a.filter(v => bSet.has(v)); // [ 2, 3 ]
    const interestSet = a.filter(v => !bSet.has(v)); // [ 1 ]

ES7

  1. 求幂运算符(**)

    Math.pow(3, 2) === 3 ** 2    // 9

  2. Array.prototype.includes()

    [1, 2, 3].indexOf(3) > -1 // true
    等同于:
    [1, 2, 3].includes(3) // true

ES8

  1. async、await异步解决方案

    提出场景有两个:JS是单线程、优化回调地狱的写法。

    this.$http.jsonp('/login', (res) => {
      this.$http.jsonp('/getInfo', (info) => {
      // do something
      })
    })
    在ES6中为了解决回调的书写方式,引入了Promise的then函数,业务逻辑很多的时候,需要链式多个then函数,语义会变得很不清楚。

    new Promise((resolve, reject) => {this.login(resolve)})
      .then(() => this.getInfo())
      .then(() => {// do something})
      .catch(() => { console.log("Error") })

    Generator函数应运而生,它只是一个分段执行任务,通过状态指针next分布执行任务,但是流程管理不太方便(每个阶段何时执行不太明了),所以它只是一个中间产物。

    const gen = function* () {
      const f1 = yield this.login()
      const f2 = yield this.getInfo()
    };
    ES8中把async和await变得更加方便,它其实就是Generator的语法糖。async/await是写异步代码的新方式,以前的方法有回调函数和Promise。相比于Promise,它更加简洁,并且处理错误、条件语句、获取中间值都更加方便。

    async function asyncFunc(params) {
      const result1 = await this.login()
      const result2 = await this.getInfo()
    }
    如果想进一步了解async的具体时间,可以参见阮一峰的博客es6.ruanyifeng.com/#docs/async

  2. Object.entries()

    该方法会将某个对象的可枚举属性与值按照二维数组的方式返回。(如果目标对象是数组,则会将数组的下标作为键值返回)

    Object.entries({ one: 1, two: 2 }) //[['one', 1], ['two', 2]]
    Object.extries([1, 3]) //[['0', 1], ['1', 3]]

  3. Object.values()

    它的工作原理和Object.entries()方法很像,但是它只返回键值对中的值,结果是一维数组

    Object.values({one: 1, two: 2}) // [1, 2]
    Object.values({3: 'a', 1: 'b', 2: 'c'}) // ['b', 'c', 'a']
    Object.extries([1, 3]) //[1, 3]

  4. 字符串填充padStart()、padEnd()

    ES8提供了新的字符串填充方法,该方法可以使得字符串达到固定长度。它有两个参数,字符串目标长度和填充内容。

    'react'.padStart(10, 'm') //'mmmmmreact'
    'react'.padEnd(10, 'm') //' reactmmmmm'
    'react'.padStart(3, 'm') // 'react'

ES6/ES7/ES8新特性的更多相关文章

  1. ES6/ES7/ES8常用特性和新特性

    转自:https://www.jianshu.com/p/9da4aa1c9970

  2. es6/es7/es8常用新特性总结(超实用)

    本文标题有误导性,因为我其实想写node8的新特性,说实话一下子从node v1.x跳跃到node 8.x+ 真有点受宠若惊的感觉.一直觉得node 数组. 对象.序列等的处理没有python方便,因 ...

  3. ES7的新特性

    ES7的新特性 ES7 特性: 1.Array.prototype.includes2.Exponentiation Operator(求幂运算) 一,Array.prototype.includes ...

  4. ES7/8新特性学习随笔

    随着每年EcmaScript都会为js带来一些新特性,带来更多美化的编程体验,今天就走进一下es2016/2017所带来的新特性 ES7新特性 includes() 指数操作符 ES8新特性 asyn ...

  5. es6,es7,es8

    概述 ES全称ECMAScript,ECMAScript是ECMA制定的标准化脚本语言.目前JavaScript使用的ECMAScript版本为ECMAScript-262. ECMAScript 标 ...

  6. ECMAScript 2017(ES8)新特性简介

    目录 简介 Async函数 共享内存和原子操作 Object的新方法 String的新方法 逗号可以添加到函数的参数列表后面了 简介 ES8是ECMA协会在2017年6月发行的一个版本,因为是ECMA ...

  7. ES6语法的新特性

    ES6 就是ECMAScript 6是新版本JavaScript语言的标准.虽然目前已经更新到ES7,但是很多浏览器还不知处ES7语法,该标准仍在更新中,但目前部门网站都指出ES6的语法.目前ES6也 ...

  8. ES6 主要的新特性

    本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用. ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony( ...

  9. ES6的十个新特性

    这里只讲 ES6比较突出的特性,因为只能挑出十个,所以其他特性请参考官方文档: /** * Created by zhangsong on 16/5/20. *///    ***********Nu ...

随机推荐

  1. 2019.10.22 用TCP实现服务端并发接收

    client import socket client = socket.socket() client.connect( ('127.0.0.1',8888) ) while 1: msg = in ...

  2. PostgreSQL 给数组排序

    PostgreSQL 支持数组,可是没有对数据内部元素进行排序的一个函数.  今天我分别用PLPGSQL和PLPYTHONU写了一个.演示样例表结构: t_girl=# \d test_array; ...

  3. get请求url中带有中文参数出现乱码情况

    在项目中经常会遇到中文传参数,在后台接收到乱码问题.那么在遇到这种情况下我们应该怎么进行处理让我们传到后台接收到的参数不是乱码是我们想要接收的到的,下面就是我的一些认识和理解. get请求url中带有 ...

  4. [idea]Error:java: invalid source release: 1.8 标签: idea 2017-02-24 15:50 961人阅读

    最近用idea敲struts,虽然idea的界面很好看,代码提示也很强大,不过也的确是碰到了一些在eclipse上从来没有碰到过的问题,而且我发现,idea的错误,很多都是在外国的网站上提问的人比较多 ...

  5. [React Native]Promise机制

    React Native中经常会看到Promise机制. Promise机制代表着在JavaScript程序中下一个伟大的范式.可以把一些复杂的代码轻松撸成一个串,和Android中的rxjava非常 ...

  6. hdu3549 最大流

    #include<stdio.h> #include<string.h> #include<queue> #define MAXN 1010 using names ...

  7. Ecplise中Junit4单元测试的基本用法

    看了一些Junit4的视频,简单了解了Junit4的一些基本用法,整理记录一下. 环境搭建 这里使用的开发工具是MyEclipse,首先新建一个Java工程,将Junit4的jar包引入,eclips ...

  8. input标签和fmt:formatDate 在jsp中同时使用引号解决办法

    input标签和fmt:formatDate 在jsp中同时使用引号解决办法 使用input标签设置默认值value并格式化fmt时间格式处理 格式化前: <input type="d ...

  9. oracle函数 TRANSLATE(c1,c2,c3)

    [功能]将字符表达式值中,指定字符替换为新字符 [说明]多字节符(汉字.全角符等),按1个字符计算 [参数] c1   希望被替换的字符或变量 c2   查询原始的字符集 c3   替换新的字符集,将 ...

  10. oracle函数 LPAD(c1,n[,c2])

    [功能]在字符串c1的左边用字符串c2填充,直到长度为n时为止 [参数]C1 字符串 n 追加后字符总长度 c2 追加字符串,默认为空格 [返回]字符型 [说明]如果c1长度大于n,则返回c1左边n个 ...