Nouveautés JavaScript 2024 : toutes les nouvelles fonctionnalités

ECMAScript 2024 (ES15) est sortie le 26 juin 2024 et apporte une série de nouvelles fonctionnalités qui améliorent la fonctionnalité et l'expressivité de JavaScript. Voici les nouvelles améliorations et de leurs avantages pour les développeurs.

Groupement des itérables avec Object.groupBy() et Map.groupBy()

Ces méthodes permettent de regrouper des éléments d'un tableau ou d'un Map en fonction d'une clé spécifiée, facilitant ainsi la gestion des données groupées.

Création de Promesses avec Promise.withResolvers()

Cette fonctionnalité simplifie la création de promesses :

Comparaison :

  • Simplicité et Lisibilité : avec Promise.withResolvers(), les fonctions resolve et reject sont immédiatement disponibles dans le même scope que la promesse, ce qui rend le code plus lisible et réduit le besoin de variables intermédiaires.
  • Encapsulation : le modèle avec Promise.withResolvers() encapsule mieux les fonctions de résolution et de rejet, ce qui peut simplifier la logique pour des cas d'utilisation complexes où les résolutions ou rejets peuvent se produire en dehors du constructeur de la promesse, comme avec des écouteurs d'événements ou des callbacks asynchrones.
  • Réduction du code : Promise.withResolvers() réduit le code en supprimant la nécessité de définir manuellement les fonctions de résolution et de rejet dans le constructeur de la promesse.

Drapeau d'expression régulière /v

Le drapeau /v améliore la gestion des propriétés Unicode dans les expressions régulières, en ajoutant des fonctionnalités comme les opérations de sets et les littéraux de chaînes dans les classes de caractères.

Les nouvelles capacités sont :

  • Utilisation des propriétés Unicode des chaînes pour spécifier des ensembles de séquences de points de code​​​​.
  • Inclusion de littéraux de chaînes avec \q{} pour correspondre à des séquences spécifiques dans les classes de caractères​​​​.
  • Opérations de sets dans les classes de caractères :
    • Différence (--) pour exclure des caractères spécifiques​​​​.
    • Intersection (&&) pour correspondre aux caractères présents dans deux ensembles​​​​.
  • Amélioration de la correspondance avec /i pour les échappements de propriétés Unicode négatives​​​​.
  • Gestion améliorée des séquences complexes d'emojis et autres propriétés Unicode des chaînes​​​​.

En résumé, cela permet de rendre certaines expressions régulières complexes plus lisibles et cela permet de traiter des émojis qui sont encodés sur plusieurs points de code Unicode.

Redimensionnement des ArrayBuffers

Les ArrayBuffers peuvent désormais être redimensionnés et transférés.

Les SharedArrayBuffers peuvent uniquement croître et ne sont pas transférables.

S'assurer de la bonne formation des chaînes

Les méthodes isWellFormed() et toWellFormed() vérifient et corrigent la formation des chaînes de caractères par rapport aux unités de code UTF-16.

Une chaîne est bien formée si toutes ses unités de code sont valides en tant que points de code UTF-16 complets. Les unités de code solitaire peuvent entraîner des comportements imprévisibles dans les opérations sur les chaînes de caractères.

La méthode toWellFormed() est utile pour nettoyer des chaînes de caractères qui peuvent avoir été corrompues ou mal encodées, en remplaçant les unités de code solitaire par un symbole reconnaissable, garantissant ainsi l'intégrité de la chaîne.

Nouvelle méthode : Atomics.waitAsync()

Les Atomics en JavaScript sont un ensemble d'opérations qui permettent de manipuler des données partagées de manière sécurisée entre différents threads. Ces opérations sont essentielles pour la programmation concurrente, où plusieurs tâches s'exécutent simultanément et partagent des données.

C'est un sujet très avancé et vous ne le rencontrerez probablement jamais, nous ne développerons donc pas cette nouveauté. Sachez simplement qu'il s'agit d'une nouvelle méthode qui permet d'attendre de manière asynchrone un changement de mémoire partagée.

Suivez notre formation JavaScript ultra-complète et à jour de ces changements.