国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ES6、7、8常用新特性總結(超實用)

atinosun / 698人閱讀

摘要:定義類常用新特性在一個數組或者列表中檢查是否存在一個值還能在字符串中使用除了增強了可讀性語義化,實際上給開發者返回布爾值,而不是匹配的位置。

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.View;
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 + ")";
  }
}
7.Set
var arr = [1,2,3,3,3,3,14]
var set = new Set(arr)
var arr = Array.from(set)
console.log(arr) // 1,2,3,14
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,它更加簡潔,并且處理錯誤、條件語句、中間值都更加方便

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/101612.html

相關文章

  • ES678常用特性總結(實用)

    摘要:定義類常用新特性在一個數組或者列表中檢查是否存在一個值還能在字符串中使用除了增強了可讀性語義化,實際上給開發者返回布爾值,而不是匹配的位置。 ES6常用新特性 1. let && const let 命令也用于變量聲明,但是作用域為局部 { let a = 10; var b = 1; } 在函數外部可以獲取到b,獲取不到a,因此例如for循環計數器就適...

    Xufc 評論0 收藏0
  • 個人分享--web前端學習資源分享

    摘要:前言月份開始出沒社區,現在差不多月了,按照工作的說法,就是差不多過了三個月的試用期,準備轉正了一般來說,差不多到了轉正的時候,會進行總結或者分享會議那么今天我就把看過的一些學習資源主要是博客,博文推薦分享給大家。 1.前言 6月份開始出沒社區,現在差不多9月了,按照工作的說法,就是差不多過了三個月的試用期,準備轉正了!一般來說,差不多到了轉正的時候,會進行總結或者分享會議!那么今天我就...

    sherlock221 評論0 收藏0
  • ES6-7

    摘要:的翻譯文檔由的維護很多人說,阮老師已經有一本關于的書了入門,覺得看看這本書就足夠了。前端的異步解決方案之和異步編程模式在前端開發過程中,顯得越來越重要。為了讓編程更美好,我們就需要引入來降低異步編程的復雜性。 JavaScript Promise 迷你書(中文版) 超詳細介紹promise的gitbook,看完再不會promise...... 本書的目的是以目前還在制定中的ECMASc...

    mudiyouyou 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<