ECMAScript 2023 spec for JavaScript adds methods for arrays
April 5, 2023
ECMAScript 2023 spec for JavaScript adds methods for arrays
ECMAScript 2023, the next planned update to the official specification for the JavaScript programming language, is slated to add four capabilities in areas such as arrays and WeakMap keys, based on a list of finished proposals.
The finished proposals, published by the ECMA TC39 (Technical Committee 39) on GitHub, mark the following four features to be published this year:
- Array find from last, a proposal for
.findlast()
and.findLastIndex()
methods on array and typed array. Finding an element in an array is a very common programming pattern, the proposal states. Scenarios under which this feature would be used include when a developer knows that finding an element from last to first may have better performance, or developers care about the order of the elements. - Permitting symbols as keys in WeakMap keys, a proposal that extends the WeakMap API to allow the use of unique symbols as keys. Currently, WeakMaps are limited to allow only objects as keys.
- Change array by copy, a proposal that provides additional methods on
Array.prototype
andTypedArray.prototype
to enable changes on the array by returning a new copy of it with the change. - Hashbang grammar, a proposal to match the de facto usage in some CLI JS hosts that allow for Shebangs/Hashbang. These hosts strip the hashbang to generate valid JS source texts before passing to JS engines. This plan would move the stripping to engines and unify and standardize how that is done.
Updated versions of ECMAScript traditionally are finalized by ECMA in June. Last year’s ECMAScript 2022 featured class elements and top-level await capabilities.
Copyright © 2023 IDG Communications, Inc.
<!-- var slotName = 'bottomleaderboard'; var slotSize = []; if ($thm.deviceClass == 'mobile') { slotSize = [[300,50],[320,50],[300,250]]; } else if ($thm.deviceClass == 'tablet') { slotSize = [[728,90],[468,60]]; } else { slotSize = [[728,90],[970,90],[970,250]]; } IDG.GPT.addDisplayedAd(slotName, "true"); document.write('
'); IDG.GPT.defineGoogleTagSlot(slotName, slotSize, false, true); document.write('
'); $('#' + slotName).responsiveAd({screenSize:'971 1115', scriptTags: []}, true); //-->