最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 19:27:43
文档

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

ES6、ES7和ES8常用的特性总结(代码示例):本篇文章给大家带来的内容是关于ES6、ES7和ES8常用的特性总结(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。ES6常用新特性1. let && constlet 命令也用于变量声明,但是作用域为局部 { let a = 10;
推荐度:
导读ES6、ES7和ES8常用的特性总结(代码示例):本篇文章给大家带来的内容是关于ES6、ES7和ES8常用的特性总结(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。ES6常用新特性1. let && constlet 命令也用于变量声明,但是作用域为局部 { let a = 10;


本篇文章给大家带来的内容是关于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.1415
PI = 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(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.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']

// Correct
if (arr.includes('react')) {
 console.log('Can use React')
}
还能在字符串中使用includes:

let str = 'React Quickly'

// Correct
if (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 ** 12
let b = 2 ** 7
console.log(a === Math.pow(7,12)) // true
console.log(b === Math.pow(2,7)) // true
开发者还可以操作结果:

let a = 7
a **= 12
let b = 2
b **= 7
console.log(a === Math.pow(7,12)) // true
console.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/Await
Async/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常用的特性总结(代码示例)

ES6、ES7和ES8常用的特性总结(代码示例):本篇文章给大家带来的内容是关于ES6、ES7和ES8常用的特性总结(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。ES6常用新特性1. let && constlet 命令也用于变量声明,但是作用域为局部 { let a = 10;
推荐度:
标签: ES6 es7 es8常用
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top