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

資訊專欄INFORMATION COLUMN

聊聊ES7與ES8特性

fxp / 470人閱讀

摘要:我曾寫過一篇關(guān)于博客個(gè)最佳特性,這次我打算聊聊和特性。自從年雙十一正式上線,累計(jì)處理了億錯(cuò)誤事件,得到了金山軟件百姓網(wǎng)等眾多知名用戶的認(rèn)可。

譯者按: 轉(zhuǎn)眼ES6發(fā)布2年了,是時(shí)候了解一下ES7ES8特性了!

原文: ES7 and ES8 Features

譯者: Fundebug

為了保證可讀性,本文采用意譯而非直譯,并且對(duì)源代碼進(jìn)行了大量修改。另外,本文版權(quán)歸原作者所有,翻譯僅用于學(xué)習(xí)。

我曾寫過一篇關(guān)于ES6博客《10個(gè)最佳ES6特性》,這次我打算聊聊ES7ES8特性。

ES7只有2個(gè)特性:

includes()

指數(shù)操作符

ES8尚未發(fā)布(2017年1月),下面是它已經(jīng)完成起草的一些特性:

Object.values()

Object.entries()

padStart()

padEnd()

Object.getOwnPropertyDescriptors()

函數(shù)參數(shù)列表結(jié)尾允許逗號(hào)

Async/Await

Array.prototype.includes() 不使用ES7

使用indexOf()驗(yàn)證數(shù)組中是否存在某個(gè)元素,這時(shí)需要根據(jù)返回值是否為-1來判斷:

let arr = ["react", "angular", "vue"];

if (arr.indexOf("react") !== -1)
{
    console.log("React存在");
}
使用ES7

使用includes()驗(yàn)證數(shù)組中是否存在某個(gè)元素,這樣更加直觀簡(jiǎn)單:

let arr = ["react", "angular", "vue"];

if (arr.includes("react"))
{
    console.log("React存在");
}
指數(shù)操作符 不使用ES7

使用自定義的遞歸函數(shù)calculateExponent或者M(jìn)ath.pow()進(jìn)行指數(shù)運(yùn)算:

function calculateExponent(base, exponent)
{
    if (exponent === 1)
    {
        return base;
    }
    else
    {
        return base * calculateExponent(base, exponent - 1);
    }
}

console.log(calculateExponent(7, 3)); // 輸出343
console.log(Math.pow(7, 3)); // 輸出343
使用ES7

使用指數(shù)運(yùn)算符,就像+-等操作符一樣:

console.log(7**3);
Object.values() 不使用ES8

使用Object.keys()遍歷對(duì)象的屬性值,需要通過屬性名key去獲取屬性值:

let obj = {a: 1, b: 2, c: 3};

Object.keys(obj).forEach((key) =>
{
    console.log(obj[key]); // 輸出1, 2, 3
});
使用ES8

使用Object.values()遍歷對(duì)象的屬性值,無需使用使用屬性名:

let obj = {a: 1, b: 2, c: 3}

Object.values(obj).forEach((value) =>
{
    console.log(value); // 輸出1, 2, 3
});
Object.entries() 不使用ES8

使用Object.keys()遍歷對(duì)象的屬性名和屬性值:

let obj = {a: 1, b: 2, c: 3};

Object.keys(obj).forEach((key) =>
{
    console.log(key + ": " + obj[key]); // 輸出a: 1, b: 2, c: 3
})
使用ES8

使用Object.entries()遍歷對(duì)象的屬性名和屬性值:

let obj = {a: 1, b: 2, c: 3};

Object.entries(obj).forEach(([key, value]) =>
{
    console.log(key + ": " + value); // 輸出a: 1, b: 2, c: 3
})
padStart() 不使用ES8
console.log("0.00")             
console.log("10,000.00")    
console.log("250,000.00")  

輸出結(jié)果如下:

0.00
10,000.00
250,000.00
使用ES8

使用padStart()可以在字符串前面填充指定的字符串:

console.log("0.00".padStart(20))             
console.log("10,000.00".padStart(20))    
console.log("250,000.00".padStart(20))    

輸出結(jié)果如下:

                0.00
           10,000.00
          250,000.00
padEnd() 不使用ES8
console.log("0.00 " + "0.00" )             
console.log("10,000.00 " + "10,000.00" )    
console.log("250,000.00 " + "250,000.00")  

輸出如下:

0.00 0.00
10,000.00 10,000.00
250,000.00 250,000.00
使用ES8

使用padEnd()可以在字符串后面填充指定的字符串:

console.log("0.00".padEnd(20) + "0.00" )             
console.log("10,000.00".padEnd(20) + "10,000.00" )    
console.log("250,000.00".padEnd(20) + "250,000.00")  

輸出如下:

0.00                0.00
10,000.00           10,000.00
250,000.00          250,000.00
Object.getOwnPropertyDescriptors()

azatsBooks對(duì)象的定義如下:

let azatsBooks = {
    books: ["React Quickly"],
    get latest()
    {
        let numberOfBooks = this.books.length;
        if (numberOfBooks == 0) return undefined;
        return this.books[numberOfBooks - 1];
    }
};
不使用ES8

使用Object.getOwnPropertyDescriptor()獲取單個(gè)屬性的屬性描述符。

獲取azatsBooks對(duì)象的books屬性的屬性描述符:

console.log(Object.getOwnPropertyDescriptor(azatsBooks, "books"));

/** 輸出books屬性的屬性描述
[object Object] {
  configurable: true,
  enumerable: true,
  value: ["React Quickly"],
  writable: true
}
**/

獲取azatsBooks對(duì)象的lastest方法的屬性描述符:

console.log(Object.getOwnPropertyDescriptor(azatsBooks, "latest"));

/** 輸出lastest方法的屬性描述
[object Object] {
  configurable: true,
  enumerable: true,
  get: function get latest() {
    let numberOfBooks = this.books.length
    if (numberOfBooks == 0) return undefined
    return this.books[numberOfBooks - 1]
  },
  set: undefined
}
**/
使用ES8

Object.getOwnPropertyDescriptors()相當(dāng)于Object.getOwnPropertyDescriptor()的復(fù)數(shù)形式,可以獲取對(duì)象的所有自身屬性的描述符:

console.log(Object.getOwnPropertyDescriptors(azatsBooks))

/** 輸出azatsBooks對(duì)象所有自身屬性的屬性描述
[object Object] {
  books: [object Object] {
    configurable: true,
    enumerable: true,
    value: ["React Quickly"],
    writable: true
  },
  latest: [object Object] {
    configurable: true,
    enumerable: true,
    get: function get latest() {
      let numberOfBooks = this.books.length
      if (numberOfBooks == 0) return undefined
      return this.books[numberOfBooks - 1]
    },
    set: undefined
  }
}
**/
函數(shù)參數(shù)列表結(jié)尾允許逗號(hào) 不使用ES8
var f = function(a,
  b,
  c,
  d // d之后不能帶逗號(hào)
   ) { 
  console.log(d)
}
使用ES8
var f = function(a,
  b,
  c,
  d, // d之后允許帶逗號(hào)
) { 
  console.log(d)
}

允許逗號(hào)之后,可以避免一些不必要的報(bào)錯(cuò)。(如果你希望實(shí)時(shí)監(jiān)控JavaScript應(yīng)用的錯(cuò)誤,歡迎免費(fèi)使用Fundebug)

Async/Await 使用Promise

使用Promise寫異步代碼,會(huì)比較麻煩:

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是寫異步代碼的新方式,以前的方法有回調(diào)函數(shù)Promise。相比于Promise,它更加簡(jiǎn)潔,并且處理錯(cuò)誤、條件語句、中間值都更加方便,因此有望替代Promise,成為新一代的一步代碼編寫方式。對(duì)細(xì)節(jié)感興趣的話,可以查看我們翻譯的《Async/Await替代Promise的6個(gè)理由》。

關(guān)于Fundebug

Fundebug專注于JavaScript、微信小程序、微信小游戲、支付寶小程序、React Native、Node.js和Java實(shí)時(shí)BUG監(jiān)控。 自從2016年雙十一正式上線,F(xiàn)undebug累計(jì)處理了7億+錯(cuò)誤事件,得到了Google、360、金山軟件、百姓網(wǎng)等眾多知名用戶的認(rèn)可。歡迎免費(fèi)試用!

版權(quán)聲明

轉(zhuǎn)載時(shí)請(qǐng)注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2017/08/28/es7-and-es8/

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/88350.html

相關(guān)文章

  • 細(xì)解JavaScript ES7 ES8 ES9 新特性

    摘要:定期召開會(huì)議,會(huì)議由會(huì)員公司的代表與特邀專家出席。新版本將會(huì)包含每年截止時(shí)間之前完成的所有特性。它引入了一個(gè)新的構(gòu)造函數(shù)和具有輔助函數(shù)的命名空間對(duì)象。 導(dǎo)言:ECMAScript的演化不會(huì)停止,但是我們完全沒必要害怕。除了ES6這個(gè)史無前例的版本帶來了海量的信息和知識(shí)點(diǎn)以外,之后每年一發(fā)的版本都僅僅帶有少量的增量更新,一年更新的東西花半個(gè)小時(shí)就能搞懂了,完全沒必要畏懼。本文將帶您花大約...

    Youngs 評(píng)論0 收藏0
  • 《從零構(gòu)建前后分離的web項(xiàng)目》:前端了解過關(guān)了嗎?

    摘要:前端基礎(chǔ)架構(gòu)和硬核介紹技術(shù)棧的選擇首先我們構(gòu)建前端架構(gòu)需要對(duì)前端生態(tài)圈有一切了解,并且最好帶有一定的技術(shù)前瞻性,好的技術(shù)架構(gòu)可能日后會(huì)方便的擴(kuò)展,減少重構(gòu)的次數(shù),即使重構(gòu)也不需要大動(dòng)干戈,我通常選型技術(shù)棧會(huì)參考以下三點(diǎn)一提出自身業(yè)務(wù)的需求是 # 前端基礎(chǔ)架構(gòu)和硬核介紹 showImg(https://segmentfault.com/img/remote/146000001626972...

    lbool 評(píng)論0 收藏0
  • 《從零構(gòu)建前后分離的web項(xiàng)目》:前端了解過關(guān)了嗎?

    摘要:前端基礎(chǔ)架構(gòu)和硬核介紹技術(shù)棧的選擇首先我們構(gòu)建前端架構(gòu)需要對(duì)前端生態(tài)圈有一切了解,并且最好帶有一定的技術(shù)前瞻性,好的技術(shù)架構(gòu)可能日后會(huì)方便的擴(kuò)展,減少重構(gòu)的次數(shù),即使重構(gòu)也不需要大動(dòng)干戈,我通常選型技術(shù)棧會(huì)參考以下三點(diǎn)一提出自身業(yè)務(wù)的需求是 # 前端基礎(chǔ)架構(gòu)和硬核介紹 showImg(https://segmentfault.com/img/remote/146000001626972...

    cgspine 評(píng)論0 收藏0
  • 《從零構(gòu)建前后分離的web項(xiàng)目》:前端了解過關(guān)了嗎?前端基礎(chǔ)架構(gòu)和硬核介紹

    摘要:前端準(zhǔn)備前端了解過關(guān)了嗎前端基礎(chǔ)架構(gòu)和硬核介紹技術(shù)棧的選擇首先我們構(gòu)建前端架構(gòu)需要對(duì)前端生態(tài)圈有一切了解,并且最好帶有一定的技術(shù)前瞻性,好的技術(shù)架構(gòu)可能日后會(huì)方便的擴(kuò)展,減少重構(gòu)的次數(shù),即使重構(gòu)也不需要大動(dòng)干戈,我通常選型技術(shù)棧會(huì)參考以下三 # 前端準(zhǔn)備 :前端了解過關(guān)了嗎?前端基礎(chǔ)架構(gòu)和硬核介紹 showImg(https://segmentfault.com/img/remote/...

    SwordFly 評(píng)論0 收藏0
  • 《從零構(gòu)建前后分離的web項(xiàng)目》:前端了解過關(guān)了嗎?前端基礎(chǔ)架構(gòu)和硬核介紹

    摘要:前端準(zhǔn)備前端了解過關(guān)了嗎前端基礎(chǔ)架構(gòu)和硬核介紹技術(shù)棧的選擇首先我們構(gòu)建前端架構(gòu)需要對(duì)前端生態(tài)圈有一切了解,并且最好帶有一定的技術(shù)前瞻性,好的技術(shù)架構(gòu)可能日后會(huì)方便的擴(kuò)展,減少重構(gòu)的次數(shù),即使重構(gòu)也不需要大動(dòng)干戈,我通常選型技術(shù)棧會(huì)參考以下三 # 前端準(zhǔn)備 :前端了解過關(guān)了嗎?前端基礎(chǔ)架構(gòu)和硬核介紹 showImg(https://segmentfault.com/img/remote/...

    luffyZh 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<