Heim > Web-Frontend > js-Tutorial > Zusammenfassung häufig verwendeter Funktionen von ES6, ES7 und ES8 (Codebeispiele)

Zusammenfassung häufig verwendeter Funktionen von ES6, ES7 und ES8 (Codebeispiele)

不言
Freigeben: 2019-02-13 10:03:18
nach vorne
3186 Leute haben es durchsucht

Dieser Artikel enthält eine Zusammenfassung häufig verwendeter Funktionen (Codebeispiele) von ES6, ES7 und ES8. Ich hoffe, dass er für Freunde hilfreich ist.

Allgemeine neue Funktionen von 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.
Nach dem Login kopieren

2. Destrukturierungszuweisung

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;
Nach dem Login kopieren

3. Pfeilfunktion

Der neue Pfeiloperator in ES6 wird verwendet, um das Schreiben von Funktionen zu vereinfachen Die rechte Seite ist die spezifische Operation und der Rückgabewert.

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
Nach dem Login kopieren

4 ... Die Einführung des Operators

wird selten die Erweiterungsfunktion verwenden. Dadurch kann das Array direkt als Parameter an die Funktion übergeben werden:

var people = ['Lily', 'Lemon', 'Terry'];
function sayHello(people1,people2,people3){
    console.log(`Hello ${people1},${people2},${people3}`);
}
sayHello(...people);//输出:Hello Lily,Lemon,Terry
Nach dem Login kopieren

5. Iterierbarer Typ

Um die Sammlungstypen zu vereinheitlichen, wird der ES6-Standard verwendet Es wurde ein neuer iterierbarer Typ eingeführt: Array, Map und Set gehören alle zum iterierbaren Typ. Sammlungen mit iterierbarem Typ können durch die neue for... of-Schleife durchlaufen werden.

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
Nach dem Login kopieren

6. Klasse

ES6 bietet eine Schreibmethode, die traditionellen Sprachen näher kommt, und führt das Konzept der Klasse als Vorlage für Objekte ein. Klassen können über das Schlüsselwort class definiert werden, ähnlich wie in den meisten herkömmlichen Sprachen.

//定义类
class Point {
  constructor(x, y) {
    this.x = x;
    this.y = y;
  }

  toString() {
    return '(' + this.x + ', ' + this.y + ')';
  }
}
Nach dem Login kopieren

Gemeinsame neue Funktionen von 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)
Nach dem Login kopieren

2.Exponentiation Operator (Potenzierungsoperation)

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
Nach dem Login kopieren

Neue Funktionen von ES8

1. Object.values/Object.entries

ES5 führt die Object.keys-Methode ein, die eine zurückgibt array , Mitglieder sind die Schlüsselnamen aller durchlaufbaren (aufzählbaren) Eigenschaften des Parameterobjekts selbst (mit Ausnahme der geerbten).
Die Object.values-Methode gibt ein Array zurück, dessen Mitglieder die Schlüsselwerte aller durchlaufbaren (aufzählbaren) Eigenschaften des Parameterobjekts selbst sind (mit Ausnahme der geerbten).
Die Object.entries-Methode gibt ein Array zurück, dessen Mitglieder Schlüsselwert-Arrays aller durchlaufbaren (aufzählbaren) Eigenschaften des Parameterobjekts selbst sind (mit Ausnahme der geerbten).

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]
}
Nach dem Login kopieren

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)
})
Nach dem Login kopieren

Async/Await ist eine neue Art zu schreiben Asynchroner Code. Die vorherigen Methoden waren Callback-Funktionen und Promises. Im Vergleich zu Promise ist es prägnanter und die Handhabung von Fehlern, bedingten Anweisungen und Zwischenwerten ist bequemer

Das obige ist der detaillierte Inhalt vonZusammenfassung häufig verwendeter Funktionen von ES6, ES7 und ES8 (Codebeispiele). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage