IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

La spécification ECMAScript 2023 pour JavaScript inclut de nouvelles méthodes pour les tableaux


Sujet :

JavaScript

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Dirigeant
    Inscrit en
    Juin 2016
    Messages
    3 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Dirigeant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2016
    Messages : 3 160
    Points : 66 249
    Points
    66 249
    Par défaut La spécification ECMAScript 2023 pour JavaScript inclut de nouvelles méthodes pour les tableaux
    La spécification ECMAScript 2023 pour JavaScript inclut de nouvelles méthodes pour les tableaux
    notamment la possibilité de rechercher un élément dans un tableau à partir de la fin du tableau

    ECMAScript 2023 (ES14), la prochaine mise à jour prévue de la norme officielle du langage de programmation JavaScript, devrait ajouter quatre nouvelles fonctionnalités, notamment pour la recherche et la modification des tableaux, l'utilisation de symboles comme clés WeakMap et la normalisation de la prise en charge de la grammaire shebang/hashbang. Ces propositions finalisées ont été publiées par l'ECMA TC39 (Technical Committee 39) sur GitHub et devraient officiellement intégrer le langage de programmation JavaScript en juin. Il s'agit de la quatorzième édition de la spécification ECMAScript depuis la publication de la première version en 1997.

    Pour rappel, ECMAScript est une spécification de langage de script qui a été développée par ECMA International, une organisation de standardisation fondée en 1961 à Genève, en Suisse. Sa norme la plus connue est ECMAScript, qui est la norme pour JavaScript. La norme ECMAScript est largement utilisée pour les scripts côté client dans les navigateurs Web, et elle est également utilisée pour les scripts côté serveur avec Node.js. De nouvelles fonctionnalités sont régulièrement ajoutées à la norme et dans le cadre de la mise à jour de cette année, les quatre fonctionnalités mentionnées ci-dessous devraient être ajoutées au langage JavaScript.

    Nom : opkl4.png
Affichages : 111674
Taille : 149,6 Ko

    Les versions actualisées de l'ECMAScript sont traditionnellement finalisées par l'ECMA en juin. La version 2022 de l'ECMAScript de l'année dernière comportait des éléments de classe et des capacités d'attente de premier niveau.

    Les méthodes .findlast() et .findLastIndex()

    Ces deux nouvelles méthodes pour les tableaux vous permettent de rechercher un élément dans un tableau à partir de la fin du tableau, plutôt qu'à partir du début. Lorsque l'itération se fait à partir du début d'un tableau, la boucle doit vérifier chaque élément du tableau jusqu'à ce qu'elle trouve l'élément souhaité. En revanche, si la recherche commence à la fin du tableau, la boucle peut s'arrêter plus tôt si elle trouve l'élément souhaité et qu'il est proche de la fin du tableau.

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    const array = [{ value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }];
     
    array.find(n => n.value % 2 === 1); // { value: 1 }
    array.findIndex(n => n.value % 2 === 1); // 0
     
    // ======== Before the proposal =========== 
     
    // find
    [...array].reverse().find(n => n.value % 2 === 1); // { value: 3 }
     
    // findIndex
    array.length - 1 - [...array].reverse().findIndex(n => n.value % 2 === 1); // 2
    array.length - 1 - [...array].reverse().findIndex(n => n.value === 42); // should be -1, but 4
     
    // ======== In the proposal =========== 
    // find
    array.findLast(n => n.value % 2 === 1); // { value: 3 }
     
    // findIndex
    array.findLastIndex(n => n.value % 2 === 1); // 2
    array.findLastIndex(n => n.value === 42); // -1


    Il en résulte moins d'itérations, ce qui peut améliorer les performances. En termes d'efficacité de la mémoire, l'itération d'un tableau à partir du dernier élément peut parfois être bénéfique lorsque le tableau est très grand et que l'utilisation de la mémoire est un problème. Dans ce cas, commencer la recherche à partir de la fin du tableau peut permettre à la boucle de se terminer plus tôt, réduisant ainsi l'empreinte mémoire du programme.

    Utilisation des symboles comme clés WeakMap

    Un WeakMap est une collection de paires clé/valeur dont les clés doivent être des objets ou des symboles non enregistrés, avec des valeurs de n'importe quel type JavaScript arbitraire, et qui ne crée pas de références fortes à ses clés. En d'autres termes, la présence d'un objet en tant que clé dans une WeakMap n'empêche pas l'objet d'être ramassé à la poubelle. Une fois qu'un objet utilisé comme clé a été collecté, ses valeurs correspondantes dans n'importe quel WeakMap deviennent également candidates à la collecte des ordures - tant qu'elles ne sont pas fortement référencées ailleurs.

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    const weak = new WeakMap();
     
    // Pun not intended: being a symbol makes it become a more symbolic key
    const key = Symbol('my ref');
    const someObject = { /* data data data */ };
     
    weak.set(key, someObject);


    Le seul type primitif qui peut être utilisé comme clé d'une WeakMap est le symbole - plus précisément, les symboles non enregistrés - car les symboles non enregistrés sont garantis uniques et ne peuvent pas être recréés. Actuellement, les WeakMaps n'autorisent que les clés d'objets. Cela signifie que si vous voulez utiliser une clé qui n'est pas un objet, vous devez utiliser une solution de contournement telle que l'utilisation d'un objet comme clé et le stockage de la valeur souhaitée en tant que propriété de cet objet. Mais la spécification ECMAScript 2023 annonce la prise en charge de l'utilisation de symboles comme clés WeakMap.

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    const objectLookup = new WeakMap();
    const otherRealm = new ShadowRealm();
    const coinFlip = otherRealm.evaluate(`(a, b) => Math.random() > 0.5 ? a : b;`);
     
    // later...
    let a = { name: 'alice' };
    let b = { name: 'bob' };
    let symbolA = Symbol();
    let symbolB = Symbol();
    objectLookup.set(symbolA, a);
    objectLookup.set(symbolB, b);
    a = b = null; // ok to drop direct object references
     
    // connected identities preserved as the symbols round-tripped through the other realm
    let chosen = objectLookup.get(coinFlip(symbolA, symbolB));
    assert(['alice', 'bob'].includes(chosen.name));


    En autorisant l'utilisation de symboles comme clés dans les WeakMaps, le changement à venir dans ECMAScript 2023 simplifiera ce processus et rendra plus intuitive l'utilisation de symboles comme clés dans les WeakMaps par les développeurs. En outre, elle fournira une approche plus cohérente de l'utilisation de symboles comme clés dans différentes structures de données JavaScript, telles que Maps et Sets, qui prennent déjà en charge l'utilisation de symboles comme clés.

    Modifier un tableau copié tout en conservant le tableau original

    Actuellement, en JavaScript, la plupart des méthodes de tableau telles que push(), pop(), shift() et unshift() modifient le tableau original en place. Avec la nouvelle proposition d'ECMAScript 2023, les développeurs pourront modifier un tableau en créant une copie de celui-ci avec les changements souhaités. Cette proposition fournit des méthodes supplémentaires sur [C=JavaScript]Array.prototype[/B] et TypedArray.prototype pour permettre des changements sur le tableau en renvoyant une nouvelle copie de celui-ci avec le changement.

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    const sequence = [1, 2, 3];
    sequence.toReversed(); // => [3, 2, 1]
    sequence; // => [1, 2, 3]
     
    const outOfOrder = new Uint8Array([3, 1, 2]);
    outOfOrder.toSorted(); // => Uint8Array [1, 2, 3]
    outOfOrder; // => Uint8Array [3, 1, 2]
     
    const correctionNeeded = [1, 1, 3];
    correctionNeeded.with(1, 2); // => [1, 2, 3]
    correctionNeeded; // => [1, 1, 3]


    La modification d'un tableau par copie peut être utile dans certains scénarios. Par exemple, cela peut permettre d'éviter des effets secondaires inattendus dans des bases de code complexes où plusieurs parties du code peuvent modifier le même tableau.

    Grammaire shebang/hashbang

    Il s'agit d'une proposition pour correspondre à l'usage de facto dans certains hôtes JS CLI qui permettent les Shebangs/Hashbang. Ces hôtes suppriment le hashbang pour générer des textes sources JS valides avant de les transmettre aux moteurs JS. Ce plan déplacerait le dépouillement vers les moteurs et unifierait et normaliserait la façon dont cela est fait. Pour précisément, la grammaire shebangs/hashbangs indique au système d'exploitation l'interpréteur à utiliser pour exécuter un script. Votre navigateur est livré avec un interpréteur par défaut, mais votre ligne de commande n'est pas livrée avec un interpréteur par défaut.

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/usr/bin/env node
    // in the Script Goal
    'use strict';
    console.log(1);


    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!/usr/bin/env node
    // in the Module Goal
    export {};
    console.log(1);


    Il existe plusieurs interprètes JS que vous pouvez télécharger dans votre environnement CLI (Node.js est le plus populaire), mais leurs shebangs ne sont pas tous identiques. Il n'est actuellement pas standardisé et varie entre les différents environnements CLI. La grammaire Hashbang proposée vise à fournir un moyen normalisé de gérer les hashbangs, notamment en les supprimant du script avant de le transmettre au moteur JavaScript pour exécution.

    Source : ECMAScript 2023 (1, 2)

    Et vous ?

    Que pensez-vous des fonctionnalités proposées pour la norme ECMAScript 2023 ?

    Voir aussi

    État de JavaScript 2022 : React reste le framework front-end dominant mais est en perte de vitesse côté satisfaction, JQuery est la troisième bibliothèque la plus utilisée

    Microsoft propose d'introduire une syntaxe de type dans JavaScript, notamment le typage des variables et des paramètres

    La spécification des nouvelles fonctionnalités de la norme ECMAScript 2021 est terminée, tour d'horizon des nouveautés introduites dans cette nouvelle version
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Membre expérimenté
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2015
    Messages
    709
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : chomeur
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 709
    Points : 1 582
    Points
    1 582
    Par défaut
    Que pensez-vous des fonctionnalités proposées pour la norme ECMAScript 2023 ?
    jour

    Ces nouveauté ferons t'elles de nous de meilleurs développeurs ?
    Plus vite encore plus vite toujours plus vite.

  3. #3
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Septembre 2014
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Septembre 2014
    Messages : 604
    Points : 1 441
    Points
    1 441
    Par défaut
    Citation Envoyé par Bill Fassinou Voir le message
    Que pensez-vous des fonctionnalités proposées pour la norme ECMAScript 2023 ?
    On est loin de la recherche dichotomique en COBOL : c'est d'une efficacité redoutable. Il me semble que ce soit le seul langage de programmation à proposer une telle possibilité.

  4. #4
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 872
    Points : 3 716
    Points
    3 716
    Par défaut
    Citation Envoyé par TotoParis Voir le message
    On est loin de la recherche dichotomique en COBOL : c'est d'une efficacité redoutable. Il me semble que ce soit le seul langage de programmation à proposer une telle possibilité.
    Cela m'a aussi fait penser à la recherche dichotomique mais en python car je lisais justement ceci : Recherche rapide par dichotomie dans une liste complexe triée

Discussions similaires

  1. Spécification de ports pour les serveurs BO
    Par henrietd dans le forum Administration-Migration
    Réponses: 1
    Dernier message: 06/02/2014, 16h43
  2. Évolution : syntaxe [] pour les tableaux
    Par Yogui dans le forum Langage
    Réponses: 29
    Dernier message: 19/03/2008, 13h10
  3. [VBA-W] énigme pour les tableaux
    Par tonnick dans le forum VBA Word
    Réponses: 3
    Dernier message: 01/10/2007, 16h12
  4. Utilisation des références pour les tableaux
    Par Bouboubou dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 4
    Dernier message: 14/12/2005, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo