精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

ECMAScript 2023 正式發布,有哪些新特性?

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

2023 年 6 月 27 日,第 125 屆 ECMA 大會正式批準了 ECMAScript 2023 語言規范,這意味著它現在正式成為最新 ECMAScript 標準。下面就來看看 ECMAScript 2023 都有哪些新特性吧!

圖片圖片

全文概覽:

  • 從頭到尾搜索數組:findLast() 、findLastIndex()
  • Hashbang 語法
  • 通過副本更改數組:toReversed()、toSorted()、toSpliced()、with()
  • Symbol 作為 WeakMap 的鍵

從尾到頭搜索數組

概述

在 JavaScript 中,通過 find() 和 findIndex()  查找數組中的值是一種常見做法。不過,這些方法從數組的開始進行遍歷:

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

array.find(elem => elem.v > 3); // {v: 4}
array.findIndex(elem => elem.v > 3); // 3

如果要從數組的末尾開始遍歷,就必須反轉數組并使用上述方法。這樣做就需要一個額外的數組操作。findLast() 和 findLastIndex() 的就解決了這一問題。提出這兩個方法的一個重要原因就是:語義。

使用

它們的用法和find()、findIndex()類似,唯一不同的是它們是 從后向前 遍歷數組,這兩個方法適用于數組和類數組。

  • findLast() 會返回第一個查找到的元素,如果沒有找到,就會返回 undefined;
  • findLastIndex() 會返回第一個查找到的元素的索引。如果沒有找到,就會返回 -1;
const array = [{v: 1}, {v: 2}, {v: 3}, {v: 4}, {v: 5}];

array.findLast(elem => elem.v > 3); // {v: 5}
array.findLastIndex(elem => elem.v > 3); // 4
array.findLastIndex(elem => elem.v > 5); // undefined

瀏覽器支持

目前主流瀏覽器都已經支持了這兩個新方法:

  • Array.prototype.findLast

圖片圖片

  • Array.prototype.findLastIndex

圖片圖片

Hashbang

Unix 的命令行腳本都支持#!命令,又稱為 Hashbang。這個命令放在腳本的第一行,用來指定腳本的執行器。Hashbang 就是想為 JavaScript 腳本引入了#!命令,這個命令寫在腳本文件或者模塊文件的第一行:

// 寫在腳本文件的第一行
#!/usr/bin/env node
'use strict';
console.log(1);

// 寫在模塊文件的第一行
#!/usr/bin/env node
export {};
console.log(1);

這樣,Unix 命令行就可以直接執行腳本了:

# 以前執行腳本
node hello.js

# 有了 hashbang 之后執行腳本
./hello.js

不過這樣的話,hashbang 就必須嚴格的在文件頭,否則就會出現語法錯誤,導致這個 JavaScript 腳本文件無法使用。

通過副本更改數組

通過副本更改數組的方法有四個:

  • Array.prototype.toReversed()
  • Array.prototype.toSorted()
  • Array.prototype.toSpliced()
  • Array.prototype.with()

我們知道,大多數的數組方法都是非破壞性的,也就是不會改變原數組,比如 filter() 方法:

const arr = ['a', 'b', 'b', 'a'];
const result = arr.filter(x => x !== 'b');
console.log(result); // ['a', 'a']

當然,也有一些是破壞性的方法,它們在執行時會改變原數組,比如 sort() 方法:

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

在數組的方法中,下面的方法是具有破壞性的:

  • reverse()
  • sort()
  • splice()

如果想要這些數組方法應用于數組而不改變它,可以使用下面任意一種形式:

const sorted1 = arr.slice().sort();
const sorted2 = [...arr].sort();
const sorted3 = Array.from(arr).sort();

可以看到,我們首先需要創建數組的副本,再對這個副本進行修改。因此就引入了這三個方法的非破壞性版本,因此不需要手動創建副本再進行操作:

  • reverse() 的非破壞性版本:toReversed()
  • sort() 非破壞性版本:toSorted(compareFn)
  • splice() 非破壞性版本:toSpliced(start, deleteCount, ...items)

這些函數屬性引入到了 Array.prototype:

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

除此之外,還有了一個新的非破壞性方法:with()。該方法會以非破壞性的方式替換給定 index 處的數組元素,即 arr[index]=value 的非破壞性版本。

所有這些方法都將保持目標數組不變,并返回它的副本并執行更改。這些方法適用于數組,也適用于類型化數組,即以下類的實例:

  • Int8Array
  • Uint8Array
  • Uint8ClampedArray
  • Int16Array
  • Uint16Array
  • Int32Array
  • Uint32Array
  • Float32Array
  • Float64Array
  • BigInt64Array
  • BigUint64Array

TypedArray是一種通用的固定長度緩沖區類型,允許讀取緩沖區中的二進制數據。其在WEBGL規范中被引入用于解決Javascript處理二進制數據的問題。類型化數組也是數組,只不過其元素被設置為特定類型的值。

類型化數組的核心就是一個名為 ArrayBuffer 的類型。每個ArrayBuffer對象表示的只是內存中指定的字節數,但不會指定這些字節用于保存什么類型的數據。通過ArrayBuffer能做的就是為了將來使用而分配一定數量的字節。

這些方法也適用于元組,元組相當于不可變的數組。它們擁有數組的所有方法——除了破壞性的方法。因此,將后者的非破壞性版本添加到數組對元組是有幫助的,這意味著我們可以使用相同的方法來非破壞性地更改數組和元組。

Array.prototype.toReversed()

toReversed() 是 reverse() 方法的非破壞性版本:

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

Array.prototype.toSorted()

toSorted() 是 sort() 方法的非破壞性版本:

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

Array.prototype.toSpliced()

splice() 方法比其他幾種方法都復雜,其使用形式:splice(start, deleteCount, ...items)。該方法會從從 start 索引處開始刪除 deleteCount個元素,然后在 start 索引處開始插入item 中的元素,最后返回已經刪除的元素。

toSpliced 是 splice() 方法的非破壞性版本,它會返回更新后的數組,原數組不會變化,并且無法再得到已經刪除的元素:

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

Array.prototype.with()

.with()方法的使用形式:.with(index, value),它是 arr[index] = value 的非破壞性版本:

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

瀏覽器支持

目前,主瀏覽器都已經支持這四個方法:

  • toReversed()

圖片圖片

  • toSorted()

圖片圖片

  • toSpliced()

圖片圖片

  • with()

圖片圖片

Symbol 作為 WeakMap 鍵

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

這樣更易于創建和共享 key:

const weak = new WeakMap();

// 更具象征意義的key
const key = Symbol('my ref');
const someObject = { /* data data data */ };

weak.set(key, someObject);

除此之外,該功能還解決了記錄和元組提案中引入的問題:如何在原始數據類型中引用和訪問非原始值? 記錄和元組不能包含對象、函數或方法,當這樣做時會拋出 TypeError:

const server = #{
    port: 8080,
    handler: function (req) { /* ... */ }, // TypeError!
};

這種限制存在是因為記錄和元組提案的關鍵目標之一是默認具有深度不可變性保證和結構相等性。接受 Symbol 值作為 WeakMap 鍵將允許 JavaScript 庫實現它們自己的類似 RefCollection 的東西,它可以重用同時不會隨著時間的推移泄漏內存:

class RefBookkeeper {
    #references = new WeakMap();
    ref(obj) {
        const sym = Symbol();
        this.#references.set(sym, obj);
        return sym;
    }
    deref(sym) { return this.#references.get(sym); }
}
globalThis.refs = new RefBookkeeper();

const server = #{
    port: 8080,
    handler: refs.ref(function handler(req) { /* ... */ }),
};
refs.deref(server.handler)({ /* ... */ });

責任編輯:武曉燕 來源: 前端充電寶
相關推薦

2022-06-24 08:33:13

ECMAScriptjavaScript

2024-06-28 11:39:21

2023-03-23 09:04:32

ECMAScript元組結構

2024-04-18 08:04:47

ElectronChrome升級

2012-08-02 17:38:38

瀏覽器

2011-07-29 09:31:32

JDK 7

2023-01-05 08:00:24

RegExpFoo類字段

2020-07-14 08:45:13

Flink特性jira

2014-03-19 11:04:14

Java 8Java8特性

2011-09-30 09:47:15

GNOME 3.2

2019-03-29 09:51:23

軟件開發者 性能

2013-02-25 14:02:07

RubyWeb

2021-03-30 14:50:41

前端TypeScript 命令

2021-06-23 09:46:16

Python 3.10結構模式管理器

2025-06-27 08:45:43

2017-09-16 15:55:54

ChromeJavaScriptAndroid

2010-03-05 08:56:14

JSFUnit 1.2

2017-09-22 14:04:33

前端Node.js新特性

2014-04-03 09:50:36

Build2014WP8
點贊
收藏

51CTO技術棧公眾號

99久久久国产精品无码网爆| 欧美日本韩国国产| 亚洲综合第一区| 成人午夜一级| 亚洲三级在线免费观看| 狠狠干一区二区| 中文字幕 日韩有码| 欧美福利一区| 亚洲奶大毛多的老太婆| 妺妺窝人体色www在线小说| 视频在线不卡| 国产综合中文字幕| 麻豆国产在线播放| 国产一区在线观看麻豆| 国产91精品不卡视频| 日韩在线视频免费看| 国产精品高潮呻吟久久久久| 欧美日韩黄色一区二区| 精品欧美一区免费观看α√| 91在线不卡| 99精品偷自拍| 亚洲综合大片69999| 精品人妻一区二区三区潮喷在线 | jizzjizz中国精品麻豆| 日韩精品导航| 欧美女孩性生活视频| 欧美变态另类刺激| 亚洲区欧洲区| 中文字幕亚洲不卡| 国产视频不卡| 亚洲国产av一区二区| 青娱乐精品在线视频| 色偷偷偷亚洲综合网另类| 国产精品手机在线观看| 久久中文字幕一区二区| 欧美日韩亚洲综合一区| 久久网站免费视频| 免费网站在线观看人| 日韩码欧中文字| 色姑娘综合网| 色视频在线观看免费| 成人av电影在线播放| 999在线观看免费大全电视剧| 中文字幕视频在线播放| 久久一区国产| 国产成人精品日本亚洲| 亚洲欧美综合自拍| 国产亚洲在线| 国产91精品视频在线观看| 欧美精品xxxxx| 91精品国产视频| 久久久精品久久久久| 色婷婷国产精品免| 成人激情开心网| 中文字幕欧美日韩va免费视频| 国产成人精品无码免费看夜聊软件| 欧美大胆视频| 精品偷拍各种wc美女嘘嘘| 在线精品一区二区三区| 久久365资源| 亚洲精品久久久久| 在线免费观看污视频| 一呦二呦三呦精品国产| 欧美日韩视频在线观看一区二区三区 | 欧美探花视频资源| 九九热在线免费| 成人黄色免费观看| 欧美色欧美亚洲另类二区| 白嫩少妇丰满一区二区| 免费污视频在线一区| 欧美在线色视频| 成年人在线观看视频免费| 成人国产一区二区三区精品麻豆| 欧美日本一区二区三区四区| 青娱乐精品在线| 国产精品丝袜在线播放| 精品成a人在线观看| 香蕉视频黄色在线观看| 欧美丝袜丝交足nylons172| 在线免费看av不卡| 精品一区二区在线观看视频| 自拍偷拍欧美专区| 97在线免费观看| 在线观看日韩中文字幕| 免费观看成人av| 亚洲伊人第一页| 天天操天天干天天插| 2020日本不卡一区二区视频| 伊人久久av导航| 视频在线观看入口黄最新永久免费国产| 日本一区二区免费在线| 欧美一级爱爱视频| 一区二区电影免费观看| 色网站国产精品| 午夜av中文字幕| 日韩高清影视在线观看| 丝袜亚洲另类欧美重口| 日韩精品国产一区二区| 美女爽到高潮91| 国产伦精品一区| 成人免费在线观看| 亚洲一区av在线| 天美星空大象mv在线观看视频| 大胆人体一区二区| 欧美视频精品在线观看| 一边摸一边做爽的视频17国产 | av高清在线免费观看| 97精品国产99久久久久久免费| 欧美乱妇23p| 黑人巨大精品欧美| 欧美日韩调教| 国产美女主播一区| 黄色美女一级片| 中文字幕一区二区三区在线播放| 美女日批免费视频| www欧美在线观看| 亚洲欧洲日本专区| 国产大片中文字幕| 国产一区福利在线| 精品999在线观看| 91在线中文| 欧美日韩精品二区第二页| 精品人妻一区二区免费| 天天做天天爱天天爽综合网| 国产91色在线免费| 午夜激情小视频| 一卡二卡欧美日韩| 91国产精品视频在线观看| 欧美黄色录像| 国语自产精品视频在免费| 国产又粗又猛又爽又黄91| 久久这里只有精品6| 亚洲理论电影在线观看| 亚洲精品三区| 中文在线不卡视频| 亚洲精品国产精品乱码| 丁香一区二区三区| 国产精品免费看久久久无码| 日本综合字幕| 亚洲色图50p| 男人天堂中文字幕| 福利一区福利二区| 欧美黑人在线观看| 51精品国产| 欧美日韩爱爱视频| 中国女人一级一次看片| 欧美韩国日本综合| 男人的天堂99| 一区中文字幕| 国内久久久精品| 亚洲国产精品成人久久蜜臀| 亚洲综合久久久| 在线观看欧美一区二区| 欧美日韩国产传媒| 国产精品国产三级国产专播精品人| 日韩在线观看视频网站| 亚洲影院理伦片| 男人的天堂影院| 黄色成人精品网站| 国产成人啪精品视频免费网| 国产午夜精品一区理论片| 日韩欧美在线一区| 永久免费成人代码| 欧美三级在线观看视频| 一区二区三区韩国免费中文网站| 欧美与黑人午夜性猛交久久久| 精品福利视频导航大全| 色诱视频网站一区| 亚洲色图 激情小说| 国产一区福利在线| 免费一级特黄毛片| 香蕉国产成人午夜av影院| 国产精品国内视频| 天天在线视频色| 欧美成人精品福利| 久久只有这里有精品| 美女一区二区三区视频| 日韩美脚连裤袜丝袜在线| 8090成年在线看片午夜| 毛片在线播放网站| 欧美日韩电影在线| 校园春色 亚洲| 99re在线视频这里只有精品| 精品久久久久久久无码| 亚洲成av人片一区二区密柚| 国内一区在线| 久久久加勒比| 欧美激情亚洲一区| 国产在线观看网站| 欧美一级专区免费大片| 亚洲免费黄色网址| 综合欧美一区二区三区| 国产草草浮力影院| 麻豆视频观看网址久久| 无码av天堂一区二区三区| 免费视频国产一区| 91香蕉国产在线观看| 美女露胸视频在线观看| 日韩激情av在线免费观看| 国产免费a视频| 亚洲午夜激情网页| 免费一级suv好看的国产网站| 国产91色综合久久免费分享| 一区二区三区视频在线观看免费| 18成人免费观看视频| 亚洲一区二区三区免费观看| 国产精品丝袜在线播放| 成人免费淫片aa视频免费| 亚洲女同志freevdieo| 欧美成人中文字幕| 五月婷婷六月丁香| 欧美日韩国产在线播放网站| 国产午夜精品一区二区理论影院| 中文字幕在线一区免费| 亚洲成人网在线播放| 国产毛片精品国产一区二区三区| 青青青在线视频免费观看| 亚洲精选成人| 一级二级三级欧美| 日韩欧美ww| 国产精品毛片va一区二区三区| 免费成人直播| 久久99热精品| 精品国产99久久久久久| 国产一区二区三区视频| 丰满人妻一区二区三区四区53| 欧美中文字幕一二三区视频| 日韩人妻精品中文字幕| 性做久久久久久免费观看欧美| 亚洲一区电影在线观看| 国产欧美1区2区3区| 超碰97在线资源站| 粉嫩绯色av一区二区在线观看| 激情在线观看视频| 极品少妇一区二区三区精品视频| www.欧美日本| 丝袜脚交一区二区| 免费高清在线观看免费| 亚洲影院在线| 91免费黄视频| 激情久久婷婷| 一本久道高清无码视频| 女生裸体视频一区二区三区| 午夜探花在线观看| 一道本一区二区三区| 久久大片网站| av成人资源| 亚洲精品免费网站| 精品一区二区三区四区五区| 91精品国产自产在线| 丁香六月综合| 国产精品久久97| 福利精品一区| 91美女片黄在线观看游戏| 99久久99九九99九九九| 亚洲一区二区三区xxx视频| 国产精品一区二区三区www| 成人观看高清在线观看免费| 久久国产精品美女| 亚洲字幕一区二区| 精品素人av| 美女三级99| 视频一区中文| 亚洲一区三区电影在线观看| 俺要去色综合狠狠| 亚州欧美一区三区三区在线| 婷婷色综合网| 国产一区二区片| 日韩一级网站| 青青青青草视频| 日韩精品乱码免费| 国产九九在线观看| 天堂va蜜桃一区二区三区| 中文字幕 91| 精品亚洲aⅴ乱码一区二区三区| 黑人性生活视频| 91视频免费播放| 国产黄色片在线| 亚洲一区二区在线观看视频| 一本一道无码中文字幕精品热| 欧美三级电影一区| 国产精品女同一区二区| 精品国产91九色蝌蚪| 国产视频在线看| 久久国产精品久久久| 中文字幕 在线观看| 国产一区二中文字幕在线看| 国产精品chinese在线观看| 日本一区免费观看| 国产电影一区二区在线观看| 俄罗斯av网站| 久久99精品久久久久婷婷| 大桥未久恸哭の女教师| 中文在线一区二区| 久久久国产精华液999999| 91tv官网精品成人亚洲| 免费成人在线视频网站| 九九视频精品免费| 国产精品成人99一区无码| 中文字幕免费不卡在线| 久久久久久av无码免费网站| 欧美亚洲国产一区在线观看网站 | 国产精品乱码人人做人人爱| 黄色一级视频在线观看| 欧美天堂一区二区三区| 黄色一级大片在线免费看国产一 | 欧美视频精品在线观看| 色欲av永久无码精品无码蜜桃| 国产一区二区三区视频免费| av不卡高清| 亚洲自拍偷拍第一页| 欧美裸体在线版观看完整版| 欧美日韩一道本| 国产真实乱对白精彩久久| a级大片在线观看| 亚洲一区在线播放| 毛片在线免费播放| 日韩大陆欧美高清视频区| 羞羞视频在线观看不卡| 国产欧美日韩专区发布| 视频福利一区| 乱熟女高潮一区二区在线| 久久精品国产秦先生| 屁屁影院国产第一页| 亚洲一区二区三区四区不卡| 国产精品视频一二区| 中文字幕日韩综合av| 牛牛精品一区二区| 国产富婆一区二区三区 | 国产精品va在线| 老牛精品亚洲成av人片| 亚洲一区二区三区色| 日本麻豆一区二区三区视频| 在线视频观看一区二区| 国产精品久久一级| 久久青青草视频| 亚洲精品短视频| 黄页在线观看免费| 亚洲综合大片69999| 欧美日韩18| 激情av中文字幕| 亚洲在线中文字幕| 国产精品女人久久久| 久久资源免费视频| 国产人与zoxxxx另类91| 免费观看黄色的网站| 国内精品视频666| 2025国产精品自拍| 91精品国产综合久久小美女| 日本精品一区二区三区在线播放| 国产精品视频99| 欧美日韩黑人| 国产嫩草在线观看| 国产精品久久久久永久免费观看| 中文字幕乱码中文字幕| 色一情一乱一区二区| 88xx成人永久免费观看| 鲁鲁狠狠狠7777一区二区| 亚洲另类视频| 久久无码人妻精品一区二区三区| 欧美日韩亚洲一区二区三区| 亚洲av电影一区| 国产精品高清在线观看| 97久久视频| 伊人av在线播放| 婷婷综合另类小说色区| 午夜激情小视频| 国产精品国语对白| 天天色天天射综合网| 亚洲国产精品第一页| 午夜不卡av在线| 丁香婷婷在线| 成人字幕网zmw| 午夜精品久久久久久久四虎美女版| 又黄又爽又色的视频| 亚洲日本在线看| 亚洲第一页综合| 91高清免费在线观看| 国产成人三级| av污在线观看| 亚洲尤物视频在线| 日韩精品视频在线观看一区二区三区| 国产精品丝袜久久久久久不卡| 欧美va亚洲va日韩∨a综合色| 成人免费无码大片a毛片| 欧美影院午夜播放| 羞羞视频在线观看不卡| 秋霞毛片久久久久久久久| 极品尤物av久久免费看| 国产一级精品视频| 日韩中文在线视频| 国产区精品视频在线观看豆花| 91视频免费版污| 亚洲高清免费一级二级三级| 午夜av免费观看| 91免费精品视频| 欧美专区18| 久久久久久久久久久久国产| 亚洲精品国产欧美| 日韩av综合|