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常用的特性总结(代码示例)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2733364.html

(0)
上一篇 2025年3月8日 00:54:58
下一篇 2025年3月8日 00:55:04

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论