精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲色图国产精品| 亚洲h在线观看| 成人免费视频网址| xxxx 国产| 久久成人av| 欧美综合一区二区三区| 自拍另类欧美| 五月婷婷六月丁香| 九色综合国产一区二区三区| 欧美国产中文字幕| 中文字幕 自拍| 日韩视频在线直播| 欧美影院一区二区| 天堂8在线天堂资源bt| 国产在线视频网址| 国产69精品久久99不卡| 国产精品∨欧美精品v日韩精品| 蜜臀av午夜精品久久| 日韩系列在线| 欧美一区二区大片| 爱情岛论坛vip永久入口| 成全电影大全在线观看| 1024成人网| 欧美高清视频一区| 免费观看黄色av| 另类中文字幕网| 日本亚洲欧洲色α| 国产无码精品在线播放| 欧美mv日韩| 国产亚洲福利一区| 懂色av粉嫩av蜜乳av| 久久伊人影院| 69p69国产精品| 亚洲高清在线免费观看| 最新欧美色图| 午夜精品福利久久久| 欧美日韩午夜爽爽| 97超碰人人在线| 久久久国产一区二区三区四区小说| caoporn国产精品免费公开| 国产尤物在线观看| 日韩av在线发布| 97在线免费观看| 九九九在线视频| 欧美在线免费| 免费av在线一区| 国产午夜手机精彩视频| 97精品国产| www.日韩免费| 极品色av影院| 日韩啪啪电影网| 中日韩美女免费视频网址在线观看| 免费看污片的网站| 久久99高清| 一区二区中文字幕| 免费网站在线高清观看| 欧美精选视频在线观看| 亚洲欧洲高清在线| 久久久视频6r| 久久国产电影| 久久国产精品久久久久久久久久| 欧美性x x x| 中文字幕亚洲综合久久五月天色无吗''| 色系列之999| 我要看黄色一级片| 午夜欧美在线| 欧美二区在线播放| 日韩xxxxxxxxx| 国产精品久久国产愉拍| 日本伊人精品一区二区三区介绍 | 亚洲成人av综合| 国产91丝袜在线播放九色| 国产精品国产三级国产专区53| 亚洲精品久久久狠狠狠爱 | 国产盗摄一区二区| 精品日韩美女的视频高清| 免费男同深夜夜行网站| 黄色成人小视频| 日韩视频在线永久播放| 激情综合激情五月| 欧美**vk| 久久亚洲国产精品成人av秋霞| 久久亚洲AV无码| 久久精品91| 成人激情视频在线观看| 亚洲av无码一区二区三区dv| 91麻豆国产香蕉久久精品| 日本视频一区二区不卡| 超碰在线caoporen| 精品二区三区线观看| 美女一区二区三区视频| 青草伊人久久| 亚洲天堂av在线免费观看| 日本二区三区视频| 中文在线不卡| 成人美女av在线直播| 日韩一级片免费看| 亚洲国产成人自拍| 男人添女荫道口图片| 91大神在线观看线路一区| 日韩欧美中文一区二区| 五月天综合视频| 欧美久久九九| 国产精品热视频| 天天色天天操天天射| 18成人在线观看| 欧美成人黑人猛交| 一区二区三区欧洲区| 影音先锋欧美精品| 日韩三级av在线| 韩国午夜理伦三级不卡影院| 欧美精品一区二区视频| 欧美巨大xxxx做受沙滩| 欧美在线免费播放| 日本一区二区在线观看视频| 色综合咪咪久久网| 国产国语刺激对白av不卡| 亚洲国产综合一区| 亚洲欧洲三级电影| 国产天堂在线播放| 亚洲盗摄视频| 91精品国产色综合久久不卡98口 | 18视频在线观看娇喘| 另类专区亚洲| 亚洲国产精品福利| 青青草精品在线视频| 欧美96一区二区免费视频| 精品伦精品一区二区三区视频| 精精国产xxxx视频在线| 在线观看视频一区二区| 99久久久久久久久久| 精品电影一区| 亚洲一区免费网站| 免费a级人成a大片在线观看| 91国产精品成人| 97人妻精品一区二区三区免| 欧美特黄a级高清免费大片a级| 国产一区欧美二区三区| 成年人视频在线看| 91成人免费在线视频| 中文字幕5566| 亚洲综合欧美| 免费中文日韩| 在线成人av观看| 日韩精品在线观看网站| 日韩精品乱码久久久久久| 成人免费视频免费观看| 女人色极品影院| 国产精品99久久免费观看| 欧美黄色片免费观看| 国内精品国产成人国产三级| 亚洲天堂av一区| 国内av免费观看| 午夜国产精品视频免费体验区| 91视频国产一区| 二区三区在线观看| 日韩女优av电影| 久久精品久久国产| a亚洲天堂av| 欧美色图另类小说| 久久av超碰| 国产精品色悠悠| 欧美日韩在线资源| 日韩欧美在线不卡| 五月天婷婷丁香| 久久久三级国产网站| 不卡av免费在线| 66视频精品| 国产精品18毛片一区二区| 精品极品在线| 亚洲欧美精品suv| 进去里视频在线观看| 亚洲欧美日韩一区二区三区在线观看| www.日本久久| 99riav1国产精品视频| 欧美日韩亚洲免费| 欧美午夜三级| 欧美日韩电影在线观看| 婷婷五月综合久久中文字幕| 色琪琪一区二区三区亚洲区| 女同久久另类69精品国产| 国产a精品视频| av免费在线播放网站| 国产韩国精品一区二区三区| av一区和二区| 亚洲伦乱视频| 精品中文字幕视频| 日韩国产福利| 欧美一区二区二区| 国产一级片毛片| 亚洲欧美aⅴ...| 熟女人妻在线视频| 精久久久久久久久久久| 黄网站欧美内射| 欧美电影免费播放| 精品欧美一区二区久久久伦 | 国产精品麻豆免费版| 欧美7777| 久久人人爽人人爽人人片av高请| 国内精品一区视频| 欧美不卡在线视频| 在线观看视频中文字幕| 亚洲国产日韩a在线播放性色| 性猛交娇小69hd| 成人性生交大合| 亚洲综合欧美在线| 亚洲欧美卡通另类91av| 最新视频 - x88av| 精品视频国产| 精品国产一区二区三区四区vr| 二区三区精品| 国产精品99免视看9| 波多野结依一区| 久久精品成人欧美大片| 麻豆app在线观看| 337p日本欧洲亚洲大胆色噜噜| 亚洲无码精品在线播放| 日韩欧美999| 久久久无码精品亚洲国产| 国产精品毛片a∨一区二区三区| 97香蕉碰碰人妻国产欧美| 国产毛片精品一区| www.cao超碰| 老司机午夜精品视频在线观看| 亚洲国产精品成人天堂| 综合久久亚洲| 在线观看18视频网站| 日本不卡二三区| 欧美一区二区视频17c| 欧美wwwsss9999| 国产日韩二区| 懂色av一区二区| 99中文视频在线| 欧美一级大片在线视频| 成人免费福利在线| 成人激情久久| 成人高h视频在线| 美女视频一区| 国产一区视频在线| 日韩av黄色| 成人黄色免费在线观看| 日韩毛片免费看| 国产女同一区二区| 成人四虎影院| 国产人妖伪娘一区91| 成人影院在线免费观看| 欧美一区二三区| 韩国成人漫画| 国产精品精品久久久| 亚洲成人一区在线观看| 国产精品白嫩美女在线观看| 日韩欧美一区二区三区免费观看| 国产va免费精品高清在线| 高清电影一区| 国产美女扒开尿口久久久| 久久久久久一区二区三区四区别墅| 国产精品丝袜白浆摸在线| 成人黄页网站视频| 91在线免费视频| julia中文字幕一区二区99在线| 99久久99久久精品国产片| 成人av综合网| 欧美日韩精品免费看| 欧美偷拍综合| 一区中文字幕在线观看| 欧美va天堂在线| 日韩精品 欧美| 视频一区二区不卡| 777一区二区| 国产成人激情av| 亚洲av成人片色在线观看高潮| 久久亚洲精华国产精华液 | 亚洲一区二三区| 国产精品999在线观看| 在线观看网站黄不卡| 国产精品无码在线播放 | 妖精视频一区二区| 91麻豆精品秘密| 久久人妻无码aⅴ毛片a片app| 亚洲国产视频直播| 欧美一区二区三区网站| 在线不卡免费av| 天天操天天操天天操| 亚洲一级免费视频| 污污的网站在线看| 日韩av电影手机在线| 亚洲男人在线| 国产一区二区不卡视频在线观看| 中文字幕中文字幕精品| 国产又大又长又粗又黄| 国产日韩专区| 狠狠干狠狠操视频| av电影天堂一区二区在线| 纪美影视在线观看电视版使用方法| 亚洲欧美激情小说另类| 国产精品久免费的黄网站| 欧美高清视频在线高清观看mv色露露十八 | 欧美三级黄美女| 538在线视频观看| 成人av免费网站| 美女视频久久久| 欧美性极品xxxx娇小| 国产精品一区二区av白丝下载| 亚洲精品视频免费在线观看| 黄色在线观看网站| 日韩美女在线看| **爰片久久毛片| 午夜午夜精品一区二区三区文| 136国产福利精品导航网址| jizz大全欧美jizzcom| 99久久777色| 欧美日韩一级大片| 91超碰这里只有精品国产| 日本护士...精品国| 色综合久综合久久综合久鬼88| 超碰这里只有精品| 国产日韩一区二区三区| 91高清一区| 婷婷激情四射五月天| 97精品国产露脸对白| 久久免费播放视频| 7777精品伊人久久久大香线蕉 | 国产精品视频久久久久久| 亚洲欧美日韩天堂一区二区| 国产后进白嫩翘臀在线观看视频| 91久热免费在线视频| 日韩在线观看| 久久久久久三级| 国产日韩欧美一区二区三区综合| 日本中文字幕网| 日韩精品专区在线影院重磅| 麻豆tv免费在线观看| 国产精品看片资源| 精品国产乱码久久久久久果冻传媒 | 亚洲jizzjizz日本少妇| 久久精品99久久无色码中文字幕| 99精品视频在线看| 91美女视频网站| 国产成人精品一区二三区| 精品国精品自拍自在线| 久久电影网站| 国产在线精品一区二区三区》| 亚洲欧美一级二级三级| 小早川怜子一区二区三区| 中文字幕一区二区三区视频| 在线观看日批视频| www国产91| 国产精品1区| 久久国产精品免费观看| 国产精品资源站在线| 国产av无码专区亚洲av毛网站| 欧美一二三在线| 性欧美猛交videos| 国产精品一级久久久| 99国产精品久久久久久久成人热 | 欧美韩日一区二区三区| 羞羞色院91蜜桃| 日韩视频欧美视频| 久久99成人| 丰满的少妇愉情hd高清果冻传媒 | 国产91在线播放九色| 欧美日韩一区二区电影| 亚洲搞黄视频| αv一区二区三区| 9色精品在线| 亚洲色成人网站www永久四虎| 欧美日韩精品一区视频| 哥也色在线视频| 加勒比在线一区二区三区观看| 国产亚洲在线观看| 欧美成人短视频| 欧美一区二区成人6969| 欧美裸体视频| 亚洲欧美日韩在线综合| 国产美女娇喘av呻吟久久| 国产 日韩 欧美 在线| 在线观看不卡av| 欧美成人精品午夜一区二区| 国产av人人夜夜澡人人爽麻豆 | 久久精品www人人爽人人| 亚洲国产中文字幕在线观看| 香蕉视频亚洲一级| 先锋影音男人资源| 91在线免费视频观看| 国产精品国产精品国产| 久久久久久国产免费 | 国产在线视频在线| 91老师国产黑色丝袜在线| 一级久久久久久久| 97在线观看免费高清| 91九色精品| 欧美亚一区二区三区| 欧美电影在线免费观看| 美女露胸视频在线观看| 一区二区在线不卡| 91在线国产福利| 亚洲av无码乱码国产麻豆 | 阿v天堂2017| 亚洲欧洲三级电影| 免费观看成年在线视频网站|