您好,欢迎访问一九零五行业门户网

ES6、ES7和ES8常用的特性总结(代码示例)

本篇文章给大家带来的内容是关于es6、es7和es8常用的特性总结(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
es6常用新特性
1. let && const
let 命令也用于变量声明,但是作用域为局部{    let a = 10;    var b = 1;        }在函数外部可以获取到b,获取不到a,因此例如for循环计数器就适合使用let。const用于声明一个常量,设定后值不会再改变const pi = 3.1415;pi // 3.1415pi = 3; //typeerror: assignment to constant variable.
2. 解构赋值
es6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(destructuring)。 例如数组:let [a, b, c] = [1, 2, 3];//等同于let a = 1;let b = 2;let c = 3;这真的让代码看起来更优美,有种python赋值的既视感。 对象的解构赋值:获取对象的多个属性并且使用一条语句将它们赋给多个变量。var {  stylesheet,  text,  view} = react;等同于var stylesheet = react.stylesheet;var text = react.text;var view = react.text;
3. 箭头函数
es6中新增箭头操作符用于简化函数的写法,操作符左边为参数,右边为具体操作和返回值。
var sum = (num1, num2) => { return num1 + num2; }//等同于var sum = function(num1, num2) {    return num1 + num2;};箭头函数还修复了this的指向,使其永远指向词法作用域:var obj = {    birth: 1990,    getage: function () {        var b = this.birth; // 1990        var fn = () => new date().getfullyear() - this.birth; // this指向obj对象        return fn();    }};obj.getage(); // 25
4. ...操作符
这个的引入几乎不会用到extend这个函数来。通过它可以将数组作为参数直接传入函数:
var people = ['lily', 'lemon', 'terry'];function sayhello(people1,people2,people3){    console.log(`hello ${people1},${people2},${people3}`);}sayhello(...people);//输出:hello lily,lemon,terry
5. iterable类型
为了统一集合类型,es6标准引入了新的iterable类型,array、map和set都属于iterable类型,具有iterable类型的集合可以通过新的for … of循环来遍历。
var a = ['a', 'b', 'c'];var s = new set(['a', 'b', 'c']);var m = new map([[1, 'x'], [2, 'y'], [3, 'z']]);for (var x of a) { // 遍历array    alert(x);}for (var x of s) { // 遍历set    alert(x);}for (var x of m) { // 遍历map    alert(x[0] + '=' + x[1]);}map相关操作如下, set同理:var m = new map(); // 空mapm.set('adam', 67); // 添加新的key-valuem.set('bob', 59);m.has('adam'); // 是否存在key 'adam': truem.get('adam'); // 67m.delete('adam'); // 删除key 'adam'm.get('adam'); // undefined
6.类
es6提供了更接近传统语言的写法,引入了class(类)这个概念,作为对象的模板。通过class关键字,可以定义类,与多数传统语言类似。
//定义类class point {  constructor(x, y) {    this.x = x;    this.y = y;  }  tostring() {    return '(' + this.x + ', ' + this.y + ')';  }}
es7常用新特性
1. array.prototype.includes
在一个数组或者列表中检查是否存在一个值let arr = ['react', 'angular', 'vue']// correctif (arr.includes('react')) {  console.log('can use react')}还能在字符串中使用includes:let str = 'react quickly'// correctif (str.tolowercase().includes('react')) {  // true  console.log('found react')  }除了增强了可读性语义化,实际上给开发者返回布尔值,而不是匹配的位置。includes也可以在nan(非数字)使用。最后 ,includes第二可选参数fromindex,这对于优化是有好处的,因为它允许从特定位置开始寻找匹配。更多例子:console.log([1, 2, 3].includes(2)) // === true)console.log([1, 2, 3].includes(4)) // === false)console.log([1, 2, nan].includes(nan)) // === true)console.log([1, 2, -0].includes(+0)) // === true)console.log([1, 2, +0].includes(-0)) // === true)console.log(['a', 'b', 'c'].includes('a')) // === true)console.log(['a', 'b', 'c'].includes('a', 1)) // === false)
2.exponentiation operator(求幂运算)
et a = 7 ** 12let b = 2 ** 7console.log(a === math.pow(7,12)) // trueconsole.log(b === math.pow(2,7)) // true开发者还可以操作结果:let a = 7a **= 12let b = 2b **= 7console.log(a === math.pow(7,12)) // trueconsole.log(b === math.pow(2,7)) // true
es8新特性
1、object.values/object.entries
es5 引入了object.keys方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键名。
object.values方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键值。
object.entries方法返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键值对数组。
let {keys, values, entries} = object;  let obj = { a: 1, b: 2, c: 3 };  for (let key of keys(obj)) {      console.log(key); // 'a', 'b', 'c'}  for (let value of values(obj)) {      console.log(value); // 1, 2, 3}  for (let [key, value] of entries(obj)) {      console.log([key, value]); // ['a', 1], ['b', 2], ['c', 3]}
2. string padding(字符串填充)
3. async/await
使用promise使用promise写异步代码,会比较麻烦:axios.get(`/q?query=${query}`).then(response => response.data).then(data =>{this.props.processfetcheddata(data);}).catch(error => console.log(error));使用async/awaitasync/await使得异步代码看起来像同步代码,这正是它的魔力所在:async fetchdata(query) =>{try{const response = await axios.get(`/q?query=${query}`);const data = response.data;return data;}catch (error){console.log(error)}} fetchdata(query).then(data =>{this.props.processfetcheddata(data)})
async/await是写异步代码的新方式,以前的方法有回调函数和promise。相比于promise,它更加简洁,并且处理错误、条件语句、中间值都更加方便
以上就是es6、es7和es8常用的特性总结(代码示例)的详细内容。
其它类似信息

推荐信息