ES6/7/8

https://www.devio.org/2018/09/09/ES6-ES7-ES8-Feature/

老师的博客官网

 reactnative主要是基于ES6和以上版本开发的。

ES6特性:

  类、模块化、箭头函数、函数参数默认值、模板字符串、解构赋值、延展操作符、对象属性简写、Promise、Let与Const。

  类:

    

     继承:

    

    模块化:

    ES5不支持原生的模块化,在ES6中模块作为重要的组成部分被添加进来。模块的功能主要由export和import 组成。每一个模块都有自己单独的作用域,模块之间的相互调用关系是通过export来规定模块对外暴露的接口,通过import来引用其他模块提供的接口。同时还为模块创造了命名空间,防止函数的命名冲突。

    导出:

      变量:export var name='Rainbow'

      常量:export const sqrt=Math.sqrt;

      多个变量:var name='Rainbow' ;

           var name='24';

           export {name,age};

      函数:

        export function myModule(someArg) {

          return someArg;

        }

    导入:

      定义好模块输出后,就可以在另外一个模块通过import引用。

      import {myModule} from 'myModule';

      import {name,age} from 'test';

      一条import语句可以同时导入默认函数和其他变量。

        import defaultMethod, {otherMethod} from 'xxx.js';

 

 这里返回的并不是对同一个函数的引用。

 

 函数参数默认值:

  

 模板字符串:

    

 解构赋值:

  方便的从数组或者对象中快速提取值赋给定义的变量。

  获取数组中的值

    从数组中获取值并赋值到变量中,变量的顺序与数组中对象顺序对应。

    

如果没有从数组中获取到值,你可以为变量设置一个默认值。

 方便的交换两个变量的值

 获取对象中的值

 延展操作符:

  延展操作符…可以在函数调用/数组构造时,将数组表达式或者string在语法层面展开;还可以在构造对象时,将对象表达式按key-value的方式展开。

  let objClone={...obj}

  

  let arr=[1,2,3]

  let  arr2=[...arr];//等同于 arr.slice()

  展开语法和Object.assign()行为一致,执行的都是浅拷贝(只遍历一层)

 Promise

  Promise是异步编程的一种解决方案,比传统的解决方案callback更加的优雅。它最早由社区提出和实现的,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象。

 

 let和const块级作用域

ES7

 includes()和指数操作符

Array.prototype.includes()

  includes函数用来判断一个数组是否包含一个给定的值,如果包含则返回true,否则返回false。

  includes函数与indexOf函数相似,下面的表达式是等价的:

    arr.includes(x)

    arr.indexOf(x)>=0

指数操作符:

  指数操作符**,**具有与Math.pow(……)等效的计算结果。

  2 ** 3 // 8

ES8

  async/await

  Object.values()与Object.keys()

  Object.entries()//返回一个给定对象自身可枚举属性的键值对的数组

  String padding

  函数参数列表结尾允许逗号

  Object.getOwnPropertyDescriptors() //获取对象自有属性

 async/await应用场景:

  获取异步函数的返回值

  并发场景使用

  

原文地址:https://www.cnblogs.com/em2464/p/12172892.html