Aller au contenu principal

39 articles tagués avec « ECMAScript »

Voir tous les tags

Blocs d'initialisation statiques des classes

· 2 minutes de lecture
Shu-yu Guo ([@_shu](https://twitter.com/_shu))

La nouvelle syntaxe des blocs d'initialisation statiques des classes permet aux développeurs de regrouper le code qui doit s'exécuter une fois pour une définition de classe donnée dans un seul endroit. Considérons l'exemple suivant où un générateur de nombres pseudo-aléatoires utilise un bloc statique pour initialiser un pool d'entropie une fois, lorsque la définition de class MyPRNG est évaluée.

`Atomics.wait`, `Atomics.notify`, `Atomics.waitAsync`

· 8 minutes de lecture
[Marja Hölttä](https://twitter.com/marjakh), une blogueuse non bloquante

Atomics.wait et Atomics.notify sont des primitives de synchronisation bas-niveau utiles pour implémenter des mutex et d’autres moyens de synchronisation. Cependant, étant donné que Atomics.wait est bloquant, il est impossible de l’appeler sur le thread principal (une tentative entraîne une TypeError).

Indices de correspondance RegExp

· 5 minutes de lecture
Maya Armyanova ([@Zmayski](https://twitter.com/Zmayski)), exprimant régulièrement de nouvelles fonctionnalités

JavaScript est désormais doté d'une nouvelle amélioration des expressions régulières, appelée "indices de correspondance". Imaginez que vous souhaitez trouver des noms de variables invalides dans des codes JavaScript qui coïncident avec des mots réservés, et afficher un caret et un « soulignement » sous le nom de la variable, comme suit :

`String.prototype.replaceAll`

· 4 minutes de lecture
Mathias Bynens ([@mathias](https://twitter.com/mathias))

Si vous avez déjà travaillé avec des chaînes de caractères en JavaScript, il y a de fortes chances que vous ayez rencontré la méthode String#replace. String.prototype.replace(searchValue, replacement) renvoie une chaîne avec certains correspondances remplacées, en fonction des paramètres que vous spécifiez :

`await` de niveau supérieur

· 6 minutes de lecture
Myles Borins ([@MylesBorins](https://twitter.com/MylesBorins))

await de niveau supérieur permet aux développeurs d'utiliser le mot-clé await en dehors des fonctions asynchrones. Il agit comme une grande fonction asynchrone, obligeant d'autres modules qui les import à attendre avant de commencer à évaluer leur corps.

Coalescence nulle

· 7 minutes de lecture
Justin Ridgewell

La proposition de coalescence nulle (??) ajoute un nouvel opérateur de court-circuit destiné à gérer les valeurs par défaut.

Vous connaissez peut-être déjà les autres opérateurs de court-circuit && et ||. Ces deux opérateurs traitent les valeurs « vraies » (truthy) et « fausses » (falsy). Imaginez l'exemple de code lhs && rhs. Si lhs (lire, côté gauche) est falsy, l'expression est évaluée à lhs. Sinon, elle est évaluée à rhs (lire, côté droit). L'inverse est vrai pour l'exemple de code lhs || rhs. Si lhs est truthy, l'expression est évaluée à lhs. Sinon, elle est évaluée à rhs.

L'enchaînement optionnel

· 5 minutes de lecture
Maya Armyanova ([@Zmayski](https://twitter.com/Zmayski)), briseuse d'enchaînements optionnels

Les longues chaînes d'accès aux propriétés en JavaScript peuvent être sujettes à des erreurs, car chacune d'entre elles peut s'évaluer à null ou undefined (aussi connues sous le nom de valeurs nulles). Vérifier l'existence des propriétés à chaque étape peut facilement se transformer en une structure profondément imbriquée avec des déclarations if ou une condition if longue répliquant la chaîne d'accès aux propriétés :

`globalThis`

· 2 minutes de lecture
Mathias Bynens ([@mathias](https://twitter.com/mathias))

Si vous avez déjà écrit du JavaScript pour une utilisation dans un navigateur web, vous avez peut-être utilisé window pour accéder au this global. Dans Node.js, vous avez peut-être utilisé global. Si vous avez écrit du code qui doit fonctionner dans les deux environnements, vous avez peut-être détecté lequel de ces éléments est disponible, puis utilisé celui-ci — mais la liste des identifiants à vérifier s'allonge avec le nombre d'environnements et de cas d'utilisation que vous souhaitez prendre en charge. Cela devient vite ingérable :