ホームページ ウェブフロントエンド jsチュートリアル ES6、ES7、ES8 の一般的に使用される機能の概要 (コード例)

ES6、ES7、ES8 の一般的に使用される機能の概要 (コード例)

Feb 13, 2019 am 10:03 AM
html html5 javascript

この記事は、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. 反復可能型

コレクション型を統一するために、ES6 標準では新しい反復可能型が導入されています。 type、Array、Map、および Set はすべて反復可能型に属します。反復可能型を持つコレクションは、新しい 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. Class

ES6 は、従来の言語に近い記述方法を提供し、オブジェクトのテンプレートとしてクラスの概念を導入します。 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。指数演算子 (指数演算)

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 メソッドが導入されています。 array 、 members は、パラメータ オブジェクト自体のすべての走査可能な (列挙可能な) プロパティ (継承されたものを除く) のキー名です。
Object.values メソッドは、パラメーター オブジェクト自体のすべての走査可能な (列挙可能な) プロパティ (継承されたものを除く) のキー値をメンバーとする配列を返します。
Object.entries メソッドは、パラメーター オブジェクト自体のすべての走査可能な (列挙可能な) プロパティ (継承されたものを除く) のキーと値の配列をメンバーとする配列を返します。

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. 文字列パディング

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 の一般的に使用される機能の概要 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

HTMLの表の境界線 HTMLの表の境界線 Sep 04, 2024 pm 04:49 PM

HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

HTML のネストされたテーブル HTML のネストされたテーブル Sep 04, 2024 pm 04:49 PM

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML 左マージン HTML 左マージン Sep 04, 2024 pm 04:48 PM

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML テーブルのレイアウト HTML テーブルのレイアウト Sep 04, 2024 pm 04:54 PM

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML入力プレースホルダー HTML入力プレースホルダー Sep 04, 2024 pm 04:54 PM

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML 順序付きリスト HTML 順序付きリスト Sep 04, 2024 pm 04:43 PM

HTML 順序付きリストのガイド。ここでは、HTML 順序付きリストと型の導入とその例についても説明します。

HTML 内のテキストの移動 HTML 内のテキストの移動 Sep 04, 2024 pm 04:45 PM

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML の onclick ボタン HTML の onclick ボタン Sep 04, 2024 pm 04:49 PM

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。

See all articles