目錄
字串填充
物件值遍歷
首頁 web前端 js教程 最新ES8特性概述

最新ES8特性概述

Jul 21, 2017 am 09:59 AM
ecmascript 概述

ECMAScript 2017(ES8)特性概述 整理自 ES8 was Released and here are its Main New Features,歸納於筆者的現代JavaScript 開發:語法基礎與實踐技巧系列文章中;也歡迎關注前端每週清單系列獲得一手資訊。

ECMAScript 2017 或ES8 與2017 年六月底由TC39 正式發布,可以在這裡瀏覽完整的版本;而ES8 中代表性的特徵包括了字符串填充、物件值遍歷、物件的屬性描述符取得、 函數參數清單與呼叫中的尾部逗號、非同步函數、共享記憶體與原子操作等。

字串填充

ES8 中新增了內建的字串填充函數,分別為padStart 與padEnd,該函數能夠透過填充字串的首部或尾部來保證字串達到固定的長度;開發者可以指定填充的字串或使用預設的空格,函數的宣告如下:

str.padStart(targetLength [, padString])

str.padEnd(targetLength [, padString])
登入後複製

如上所示,函數的首個參數為目標長度,即最終生成的字串長度;第二個參數即是指定的填充字串:

'es8'.padStart(2);          // 'es8'
'es8'.padStart(5);          // '  es8'
'es8'.padStart(6, 'woof');  // 'wooes8'
'es8'.padStart(14, 'wow');  // 'wowwowwowwoes8'
'es8'.padStart(7, '0');     // '0000es8'
'es8'.padEnd(2);          // 'es8'
'es8'.padEnd(5);          // 'es8  '
'es8'.padEnd(6, 'woof');  // 'es8woo'
'es8'.padEnd(14, 'wow');  // 'es8wowwowwowwo'
'es8'.padEnd(7, '6');     // 'es86666'
登入後複製

物件值遍歷

Object.values 函數會傳回指定物件的可枚舉的屬性值數組,數組中值順序與for-in 循環保持一致,函數的聲明為:

Object.values(obj)
登入後複製

首個參數obj 即為需要遍歷的目標對象,它可以為某個物件或陣列(陣列可以看做鍵為下標的物件):

const obj = { x: 'xxx', y: 1 };
Object.values(obj); // ['xxx', 1]

const obj = ['e', 's', '8']; // same as { 0: 'e', 1: 's', 2: '8' };
Object.values(obj); // ['e', 's', '8']

// when we use numeric keys, the values returned in a numerical 
// order according to the keys
const obj = { 10: 'xxx', 1: 'yyy', 3: 'zzz' };
Object.values(obj); // ['yyy', 'zzz', 'xxx']
Object.values('es8'); // ['e', 's', '8']
登入後複製

而Object.entries 方法則會將某個物件的可枚舉屬性與值按照二維數組的方式返回,數組中順序與Object.values 保持一致,該函數的聲明與使用為:

const obj = { x: 'xxx', y: 1 };
Object.entries(obj); // [['x', 'xxx'], ['y', 1]]

const obj = ['e', 's', '8'];
Object.entries(obj); // [['0', 'e'], ['1', 's'], ['2', '8']]

const obj = { 10: 'xxx', 1: 'yyy', 3: 'zzz' };
Object.entries(obj); // [['1', 'yyy'], ['3', 'zzz'], ['10': 'xxx']]
Object.entries('es8'); // [['0', 'e'], ['1', 's'], ['2', '8']]
登入後複製

##物件的屬性描述符取得

getOwnPropertyDescriptors 函數會傳回指定物件的某個指定屬性的描述符;該屬性必須是物件本身定義而不是繼承自原型鏈,函數的宣告為:
  • Object.getOwnPropertyDescriptor(obj, prop)
    登入後複製

    obj 即為來源對象,而prop 即為需要查看的屬性名稱;結果中包含的鍵可能有configurable、enumerable、writable、get、set 以及value。
  • const obj = { get es8() { return 888; } };
    Object.getOwnPropertyDescriptor(obj, 'es8');
    // {
    //   configurable: true,
    //   enumerable: true,
    //   get: function es8(){}, //the getter function
    //   set: undefined
    // }
    登入後複製

  • 函數參數清單與呼叫中的尾部逗號

    該特性允許我們在定義或呼叫函數時添加尾部逗號而不報錯:

function es8(var1, var2, var3,) {
  // ...
}
es8(10, 20, 30,);
登入後複製

######非同步函數######ES8 中允許使用async/await 語法來定義與執行非同步函數,async 關鍵字會傳回某個AsyncFunction 物件;在內部實作中雖然非同步函數與迭代器的實作原理類似,但並不會被轉換為迭代器函數:#########
function fetchTextByPromise() {
  return new Promise(resolve => { 
    setTimeout(() => { 
      resolve("es8");
    }, 2000);
  });
}
async function sayHello() { 
  const externalFetchedText = await fetchTextByPromise();
  console.log(`Hello, ${externalFetchedText}`); // Hello, es8
}
sayHello();

console.log(1);
sayHello();
console.log(2);

// 调用结果
1 // immediately
2 // immediately
Hello, es8 // after 2 seconds
登入後複製
######## 共享記憶體與原子操作######共享記憶體允許多個執行緒並發讀寫數據,而原子操作則能夠進行並發控制,確保多個存在競爭關係的執行緒順序執行。本部分則介紹了新的建構器 SharedArrayBuffer 與包含靜態方法的命名空間物件 Atomics。 Atomic 物件類似於Math,我們無法直接建立其實例,而只能使用其提供的靜態方法:############add /sub - 增加或減去某個位置的某個值############and / or /xor - 進行位元運算############load - 取得值########### # ##

以上是最新ES8特性概述的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

es2017是es6還是es8 es2017是es6還是es8 Oct 27, 2022 pm 05:37 PM

es2017是es8。 es全名為“ECMAScript”,是根據ECMA-262標準實現的通用腳本語言,而由2017年6月正式發布的版本,其正式名為ECMAScript2017(ES2017),因其是ECMAScript的第8個版本,因此可簡稱為es8。

C++中運算子重載問題與解決方法概述 C++中運算子重載問題與解決方法概述 Oct 08, 2023 pm 01:02 PM

C++中運算子重載問題和解決方法概述引言:運算子重載是C++語言的一個重要特性,它允許程式設計師自訂現有的運算子來操作自訂的資料型別。但是,運算子重載需要慎重使用,因為一旦使用不當或過度使用,會導致程式碼可讀性降低、出現歧義和效率降低等問題。本文將概述C++中運算子重載的常見問題,並提供對應的解決方法和程式碼範例。一、運算子重載的問題1.1歧義問題在運算子重載

Python Tkinter 大顯神通:打造驚艷 GUI 應用程式 Python Tkinter 大顯神通:打造驚艷 GUI 應用程式 Mar 24, 2024 am 09:11 AM

Tkinter是python中一個強大的GUI函式庫,可用於建立跨平台的桌面應用程式。憑藉其易用性和廣泛的功能,它為建立使用者介面、處理事件和管理佈局提供了各種工具。建立GUI窗口要建立GUI窗口,需要使用Tkinter.Tk()方法。此方法傳回一個Tk()對象,表示應用程式的主視窗。視窗可以使用title()方法設定標題,並使用geometry()方法設定視窗大小和位置。 importtkinterastkroot=tk.Tk()root.title("我的第一個Tkinter應用程式")root.g

一文快速詳解ES6~ES12的全部特性! 一文快速詳解ES6~ES12的全部特性! Jul 22, 2022 am 11:06 AM

這篇文章跟大家整理分享ECMAScript特性,帶大家花一個小時,快速了解ES6~ES12的全部特性。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

PHP 高可用性:實現 24/7 應用程式可用性的最佳實踐 PHP 高可用性:實現 24/7 應用程式可用性的最佳實踐 Mar 26, 2024 pm 09:31 PM

實現應用程式的高可用性至關重要,以確保關鍵業務服務的無縫運作。對於使用PHP建置的應用程序,有多種最佳實踐可用於實現24/7的可用性。故障轉移和容錯負載平衡:使用後端負載平衡器將流量分佈到多個伺服器,避免單點故障。故障轉移:設定自動故障轉移機制,以便在發生故障時將流量轉移到備用伺服器。容錯編碼:使用容錯編碼技術,例如RaiD或擦除碼,保護資料免受磁碟故障的影響。冗餘和彈性自動擴展:啟用自動擴展功能,以便根據負載動態新增或刪除伺服器。多可用區部署:將應用程式部署到多個可用區(AZ),以最大程度地

PHP8.0中的EventLoop函式庫概述 PHP8.0中的EventLoop函式庫概述 May 14, 2023 am 08:49 AM

隨著PHP語言的發展,開發人員需要更多的工具來解決現代應用程式的需求和挑戰,其中之一就是事件驅動編程,而PHP8.0的EventLoop庫正是為這個目的而生的。本文將對該庫進行概述和介紹。什麼是EventLoop在傳統的PHP應用程式中,大多數操作都是同步的。也就是說,程式會執行一些程式碼,然後等待相關的資料回傳,再繼續執行後續的程式碼。這種程式設計模型對於某些應用

揭秘Yii框架的幕後故事:掌控PHP開發的新境界 揭秘Yii框架的幕後故事:掌控PHP開發的新境界 Mar 26, 2024 am 10:31 AM

Yii框架是一個現代、高效能的PHP框架,旨在簡化和加速WEB應用程式的開發。它提供了一個健壯的基礎,使開發人員能夠專注於業務邏輯,而不是低階細節。幕後故事模組化架構:Yii採用模組化架構,使應用程式可以輕鬆擴展和自訂。模組是一種獨立的可重複使用程式碼區塊,可用於實現特定功能,例如使用者管理或電子商務。 MVC模式:Yii遵循mvc(模型-視圖-控制器)模式,將應用程式邏輯與表示層分開。這促進程式碼的可維護性,並改善應用程式的可測試性。 ORM支援:Yii提供了一個強大的物件關係映射(ORM)層,使開發人員能夠

介紹無線網路 介紹無線網路 Feb 19, 2024 pm 10:38 PM

無線網路概述隨著科技的快速發展,無線網路成為了現代生活中不可或缺的一部分。我們的手機、電腦、智慧家庭等設備都依賴無線網路進行通訊和連接。在這篇文章中,我們將對無線網路進行概述,探討它的發展歷程、原理和應用。無線網路的發展歷程可追溯到19世紀的無線電通訊技術。當時,人們利用無線電波實現了遠距離的聲音和影像傳輸,開創了無線通訊的先河。隨著電子技術的進一步

See all articles