日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

ES13中五個最具變革性的JavaScript特性

來源: 責編: 時間:2024-07-25 16:45:31 612觀看
導讀ES13包含了許多有價值的特性,徹底改變了我們編寫JavaScript的方式。從異步升級到數組語法糖等等,讓我們來看看這些特性,看看你是否錯過了其中一些。1. 頂級await在ES13之前,我們永遠不能在全局作用域中使用await。? 之前

fSp28資訊網——每日最新資訊28at.com

ES13包含了許多有價值的特性,徹底改變了我們編寫JavaScript的方式。fSp28資訊網——每日最新資訊28at.com

從異步升級到數組語法糖等等,讓我們來看看這些特性,看看你是否錯過了其中一些。fSp28資訊網——每日最新資訊28at.com

1. 頂級await

在ES13之前,我們永遠不能在全局作用域中使用await。fSp28資訊網——每日最新資訊28at.com

? 之前:fSp28資訊網——每日最新資訊28at.com

// X 語法錯誤:await 只在異步函數中有效await setTimeoutAsync(3000);function setTimeoutAsync(timeout) {  return new Promise((resolve) => {    setTimeout(() => {      resolve('codingbeautydev.com');    }, timeout);  });}

我們總是必須將其放在async函數中或創建一個async IIFE(立即執行函數表達式):fSp28資訊網——每日最新資訊28at.com

// 異步立即執行函數(async () => {  await setTimeoutAsync(3000);})();// 類似 C++async function main() {  await setTimeoutAsync(3000);}

? ES13之后:fSp28資訊網——每日最新資訊28at.com

// ? 等待超時 - 沒有拋出錯誤await setTimeoutAsync(3000);function setTimeoutAsync(timeout) {  return new Promise((resolve) => {    setTimeout(() => {      resolve('codingbeautydev.com');    }, timeout);  });}

2. 類聲明升級

(1)類字段聲明

在ES13之前,我們只能在構造函數中聲明類字段: 與許多其他語言不同,我們不能在類的最外層作用域中聲明或定義它們。fSp28資訊網——每日最新資訊28at.com

? 之前:fSp28資訊網——每日最新資訊28at.com

? 現在有了ES13: 就像在TypeScript中一樣:fSp28資訊網——每日最新資訊28at.com

(2)私有方法和字段

在ES13之前,創建私有方法是不可能的。 我們還必須使用丑陋的下劃線hack來表示私有性 — 但那只是一個指示。fSp28資訊網——每日最新資訊28at.com

? 之前:fSp28資訊網——每日最新資訊28at.com

class Person {  _firstName = 'Tari';  _lastName = 'Ibaba';  get name() {    return `${this._firstName} ${this._lastName}`;  }}const person = new Person();console.log(person.name); // Tari Ibaba// 我們仍然可以訪問私有成員!console.log(person._firstName); // Tariconsole.log(person._lastName); // Ibaba// 它們也可以被修改!person._firstName = 'Lionel';person._lastName = 'Messi';console.log(person.name); // Lionel Messi

? ES13之后:fSp28資訊網——每日最新資訊28at.com

我們可以通過在字段前加上井號(#)來為類添加私有字段和成員:fSp28資訊網——每日最新資訊28at.com

如果你試圖從類外部訪問它,你會得到一個語法錯誤:fSp28資訊網——每日最新資訊28at.com

class Person {  #firstName = 'Tari';  #lastName = 'Ibaba';  get name() {    return `${this.#firstName} ${this.#lastName}`;  }}const person = new Person();console.log(person.name);// 語法錯誤:私有字段 '#firstName' 必須在封閉的類中聲明console.log(person.#firstName);console.log(person.#lastName);

我們可以從錯誤消息中看到一些有趣的東西:fSp28資訊網——每日最新資訊28at.com

編譯器甚至不期望你從類外部嘗試訪問私有字段 — 它假設你是在嘗試創建一個。fSp28資訊網——每日最新資訊28at.com

(3)靜態類字段和靜態私有方法

靜態字段 — 類本身的屬性,而不是任何特定實例的屬性。fSp28資訊網——每日最新資訊28at.com

自ES13以來,我們現在可以輕松地為任何類創建它們:fSp28資訊網——每日最新資訊28at.com

class Person {  static #count = 0;  static eyeCount = 2;  static getCount() {    // 使用 this 訪問同級靜態成員    return this.#count;  }  // 實例成員  constructor() {    // 使用 this.constructor 訪問靜態成員    this.constructor.#incrementCount();  }  static #incrementCount() {    this.#count++;  }}const person1 = new Person();const person2 = new Person();console.log(Person.getCount()); // 2

3. 數組升級:新的at()方法

通常我們會使用方括號([])來訪問數組的第N個元素。fSp28資訊網——每日最新資訊28at.com

const arr = ['a', 'b', 'c', 'd'];console.log(arr[1]); // b

但從末尾訪問第N個項目一直是一個痛點 -- 我們必須使用arr.length - N進行索引:fSp28資訊網——每日最新資訊28at.com

? ES13之前:fSp28資訊網——每日最新資訊28at.com

const arr = ['a', 'b', 'c', 'd'];// 倒數第1個元素console.log(arr[arr.length - 1]); // d// 倒數第2個元素console.log(arr[arr.length - 2]); // c

幸運的是,ES13帶來了一個新的at()方法,解決了所有這些問題:fSp28資訊網——每日最新資訊28at.com

const str = 'Coding Beauty';console.log(str.at(-1)); // y 倒數第1個字符console.log(str.at(-2)); // t 倒數第2個字符

4. 靜態類塊

隨著靜態字段的出現,靜態塊也來了。 只在創建時執行一次代碼 — 就像C#和Java等OOP語言中的靜態構造函數。 所以你可以在類中創建任意多個靜態塊 — 所有代碼都會按你定義的順序運行:fSp28資訊網——每日最新資訊28at.com

class Vehicle {  static defaultColor = 'blue';}class Car extends Vehicle {  static colors = [];  //  
                

本文鏈接:http://www.www897cc.com/showinfo-26-103577-0.htmlES13中五個最具變革性的JavaScript特性

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 全棧開發要掌握什么技術?

下一篇: 抖音新規:整體治理虛假“身份”“內容”“營銷”“流量”四類行為

標簽:
  • 熱門焦點
  • 2023 年的 Node.js 生態系統

    隨著技術的不斷演進和創新,Node.js 在 2023 年達到了一個新的高度。Node.js 擁有一個龐大的生態系統,可以幫助開發人員更快地實現復雜的應用。本文就來看看 Node.js 最新的生
  • 之家push系統迭代之路

    前言在這個信息爆炸的互聯網時代,能夠及時準確獲取信息是當今社會要解決的關鍵問題之一。隨著之家用戶體量和內容規模的不斷增大,傳統的靠"主動拉"獲取信息的方式已不能滿足用
  • 一文掌握 Golang 模糊測試(Fuzz Testing)

    模糊測試(Fuzz Testing)模糊測試(Fuzz Testing)是通過向目標系統提供非預期的輸入并監視異常結果來發現軟件漏洞的方法。可以用來發現應用程序、操作系統和網絡協議等中的漏洞或
  • 一個注解實現接口冪等,這樣才優雅!

    場景碼猿慢病云管理系統中其實高并發的場景不是很多,沒有必要每個接口都去考慮并發高的場景,比如添加住院患者的這個接口,具體的業務代碼就不貼了,業務偽代碼如下:圖片上述代碼有
  • 一文搞定Java NIO,以及各種奇葩流

    大家好,我是哪吒。很多朋友問我,如何才能學好IO流,對各種流的概念,云里霧里的,不求甚解。用到的時候,現百度,功能雖然實現了,但是為什么用這個?不知道。更別說效率問題了~下次再遇到,
  • 當家的盒馬,加速謀生

    來源 | 價值星球Planet作者 | 歸去來自己“當家”的盒馬,開始加速謀生了。據盒馬官微消息,盒馬計劃今年開放生鮮供應鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經與
  • 超級標準版旗艦!iQOO 11S全球首發iQOO超算獨顯芯片

    上半年已接近尾聲,截至目前各大品牌旗下的頂級旗艦都已悉數亮相,而下半年即將推出的頂級旗艦已經成為了數碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • AI藝術欣賞體驗會在上海梅賽德斯奔馳中心音樂俱樂部上演

    光影交錯的鏡像世界,虛實幻化的視覺奇觀,虛擬偶像與真人共同主持,這些場景都出現在2019世界人工智能大會的舞臺上。8月29日至31日,“AI藝術欣賞體驗會”在上海
  • 利用職權私自解除被封帳號 Meta開除20多名員工

    11月18日消息,據外媒援引知情人士表示,過去一年時間內,Facebook母公司Meta解雇或處罰了20多名員工以及合同工,指控這些人通過內部系統以不當方式重置用戶帳號,其
Top 主站蜘蛛池模板: 临颍县| 盐城市| 土默特左旗| 海城市| 上栗县| 镇赉县| 左权县| 施秉县| 三明市| 清水县| 龙门县| 迁安市| 闽清县| 桂东县| 靖江市| 鄱阳县| 江津市| 武胜县| 油尖旺区| 安图县| 巴林右旗| 射阳县| 乌什县| 屏东市| 靖西县| 商河县| 多伦县| 大邑县| 龙口市| 高碑店市| 民乐县| 湘潭县| 土默特左旗| 云林县| 芦溪县| 泸水县| 长子县| 南岸区| 大厂| 包头市| 江陵县|