ECMA 2023(ES14) 新特性

来源:https://www.cnblogs.com/guojikun/p/18206186
-Advertisement-
Play Games

ECMAScript 2023 主要包含內容 ECMAScript 2023 於 2023 年 6 月 27 日獲得 ECMA International 的批准。 ECMAScript 是標準化的 JavaScript 語言,於 1997 年發佈了第一版,現已發展成為世界上使用最廣泛的通用編程語言 ...


ECMAScript 2023 主要包含內容

ECMAScript 2023 於 2023 年 6 月 27 日獲得 ECMA International 的批准。

ECMAScript 是標準化的 JavaScript 語言,於 1997 年發佈了第一版,現已發展成為世界上使用最廣泛的通用編程語言之一。

本 Ecma 標准定義了 ECMAScript 2023 Language,是 ECMAScript 語言規範的第 14 版。

從後向前遍曆數組

它們的用法和find()findIndex()類似,唯一不同的是它們是 從後向前遍曆數組,這兩個方法適用於數組類數組

  • findLast() 會返回第一個查找到的元素,如果沒有找到,就會返回 undefined
  • findLastIndex() 會返回第一個查找到的元素的索引。如果沒有找到,就會返回 -1;

示例:

const array = [{ value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }];

array.find((n) => n.value % 2 === 1); // { value: 1 }
array.findIndex((n) => n.value % 2 === 1); // 0

// ======== proposal 之前 ===========

// find
[...array].reverse().find((n) => n.value % 2 === 1); // { value: 3 }

// findIndex
array.length - 1 - [...array].reverse().findIndex((n) => n.value % 2 === 1); // 2
array.length - 1 - [...array].reverse().findIndex((n) => n.value === 42); // should be -1, but 4

// ======== proposal 之後 ===========
// find
array.findLast((n) => n.value % 2 === 1); // { value: 3 }

// findIndex
array.findLastIndex((n) => n.value % 2 === 1); // 2
array.findLastIndex((n) => n.value === 42); // -1

Hashbang

此提案是為了匹配某些允許 Shebangs/Hashbang 的 CLI JS 主機中的實際用法。
目前,此類主機會剝離 hashbang,以便在傳遞給 JS 引擎之前生成有效的 JS 源文本。這會將剝離轉移到發動機上,它確實統一併標準化了剝離的方式。

示例:

#!/usr/bin/env node
// 在腳本目標中
"use strict";
console.log(1);
#!/usr/bin/env node
// 在模塊目標中
export {};
console.log(1);

使用 Symbol 作為 WeakMap

目前,WeakMap 僅允許使用對象作為鍵,這是 WeakMap 的一個限制。新功能擴展了 WeakMap API,允許使用唯一的 Symbol 作為鍵

示例:

const weak = new WeakMap();

// 使用符號使它成為一個更具意義的 key
const key = Symbol("my ref");
const someObject = {
    /* data data data */
};

weak.set(key, someObject);

使用複製的方法更改數組內容

該提案在  Array.prototype  和  TypedArray.prototype  上提供了額外的方法,通過返回包含更改的新副本來啟用對數組的更改。

該提案向  Array.prototype  引入了以下函數屬性:

  • Array.prototype.toReversed() -> Array
  • Array.prototype.toSorted(compareFn) -> Array
  • Array.prototype.toSpliced(start, deleteCount, ...items) -> Array
  • Array.prototype.with(index, value) -> Array

所有這些方法都保持目標數組不變,並返回執行更改的副本。

toReversed 、 toSorted  和  with  也將被添加到 TypedArrays 中:

  • TypedArray.prototype.toReversed() -> TypedArray
  • TypedArray.prototype.toSorted(compareFn) -> TypedArray
  • TypedArray.prototype.with(index, value) -> TypedArray

示例:

const sequence = [1, 2, 3];
sequence.toReversed(); // => [3, 2, 1]
sequence; // => [1, 2, 3]

const outOfOrder = new Uint8Array([3, 1, 2]);
outOfOrder.toSorted(); // => Uint8Array [1, 2, 3]
outOfOrder; // => Uint8Array [3, 1, 2]

const correctionNeeded = [1, 1, 3];
correctionNeeded.with(1, 2); // => [1, 2, 3]
correctionNeeded; // => [1, 1, 3]

參考內容

本文來自博客園,作者:_zhiqiu,轉載請註明原文鏈接:https://www.cnblogs.com/guojikun/p/18206186


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 用戶在頁面訪問時發送數據到後臺,頁面關閉時也發送數據到後臺。 第一次進入頁面時觸發頁面訪問 刷新當前頁面時觸發頁面訪問 新 tab 進入頁面時觸發頁面訪問 當前頁面點擊 nav 進入其他模塊時,觸發頁面關閉&頁面訪問 關閉頁面時觸發頁面關閉 ...
  • 本章內容: 行分隔符(U + 2028)和段分隔符(U + 2029)符號現在允許在字元串文字中,與 JSON 匹配 更加友好的 JSON.stringify 新增了 Array 的flat()方法和flatMap()方法 新增了 String 的trimStart()方法和trimEnd()方法 ...
  • 一、區別 前面兩節我們有提到Loader與Plugin對應的概念,先來回顧下 loader 是文件載入器,能夠載入資源文件,並對這些文件進行一些處理,諸如編譯、壓縮等,最終一起打包到指定的文件中 plugin 賦予了 webpack 各種靈活的功能,例如打包優化、資源管理、環境變數註入等,目的是解決 ...
  • FreeTube —— 一款開源桌面 YouTube 播放器,基於 Electron 實現,同時支 Windows(10 及更高版本)、Mac(macOS 10.15 及更高版本)和 Linux。 ...
  • 當用戶進行滑鼠框選選擇了頁面上的內容時,把選擇的內容進行上報。 分為以下幾點: 選擇文案時 選擇圖片、svg、iframe、video、audio 等標簽時 選擇 input、select、textarea 等標簽時 選擇input、textarea 標簽內容時 選擇類似   字元時 鍵盤全選時 鼠... ...
  • 隨著大學校園跑腿業務市場的興起,懶人經濟越來越明顯,校園跑腿需求市場廣闊,不僅是商家可以做好校園跑腿業務,學生個人也是可以很好經營自己的跑腿業務的,前期的時候可以一個人做,後期隨著單量的增加,忙不過來了,可以號召身邊的同學,校友等願意賺取一點外快的小伙伴加入。 ...
  • 一、前言 下拉刷新和上拉載入這兩種交互方式通常出現在移動端中 本質上等同於PC網頁中的分頁,只是交互形式不同 開源社區也有很多優秀的解決方案,如iscroll、better-scroll、pulltorefresh.js庫等等 這些第三方庫使用起來非常便捷 我們通過原生的方式實現一次上拉載入,下拉刷 ...
  • 本章內容: Array.prototype.includes():判斷一個數組是否包含一個指定的值,如果包含則返回 true,否則返回 false。 冪運算符**: a ** b 指數運算符,它與 Math.pow(a, b)相同。 Array.prototype.includes() includ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...