Computing">
JavaScript Support
JavaScript Support
bstorm est un acteur reconnu de la formation professionnelle en Belgique, avec plus de 4000 journées de formation
délivrées chaque année. Nous accompagnons les entreprises dans la montée en compétences de leurs équipes à travers
des parcours sur mesure en développement logiciel (.NET, Java, JavaScript, Python), en front-end (React), en DevOps, en
intelligence artificielle, en analyse de données (SQL, Power BI), en business analysis et en gestion de projet.
bstorm met l’analyse des données au service de la performance opérationnelle. Nous aidons les organisations à exploiter
pleinement leur capital data via des dashboards interactifs, des modèles prédictifs, du machine learning et des outils
d’aide à la décision. Notre approche privilégie la simplicité, la pertinence et l’autonomie dans l’usage quotidien des
données, pour des décisions plus rapides et mieux informées.
bstorm accompagne les entreprises dans l’ensemble de leur transformation digitale : diagnostic, automatisation des
processus, dématérialisation, modernisation des outils métier, gestion documentaire, collaboration, cybersécurité,
intégration de l’IA et pilotage par les données. Nous combinons conseil stratégique, accompagnement au changement et
développement de solutions concrètes pour renforcer l’efficacité opérationnelle et la résilience des organisations.
bstorm Artificial Intelligence accompagne les entreprises dans l’identification et la mise en œuvre de cas d’usage
concrets de l’IA. De la sélection des outils aux intégrations techniques, nous développons des solutions sur mesure pour
automatiser, prédire, assister ou optimiser vos processus. Notre mission : rendre l’IA accessible, utile et directement
applicable à vos métiers.
Table des matières
● Introduction ● Les Dates
○ Le JavaScript, c’est quoi ? ○ L’objet de type « Date »
○ Premiers pas en JavaScript ○ Méthodes d’un objet « Date »
● Les variables ● Les opérateurs
○ Déclaration de variable ○ Les opérateurs d’égalité
○ Le typage ○ Les opérateurs de comparaison
○ Les valeurs prédéfinies ○ Les opérateurs logique
● Interaction avec le DOM - Les Bases ● Traitement conditionnelle
○ Introduction au DOM ○ La structure « if…else »
○ Interaction basique avec une page ○ La structure « switch »
● Les types de données ○ L’opérateur « ternaire »
○ Number ○ Les opérateurs logiques
○ BigInt ○ L’opérateur « nullish coalescing »
○ String
○ Boolean
○ Object
Table des matières
● Interaction avec le DOM - Modifier la page ● Les fonctions
○ Créer un nouvel élément ○ Déclaration et utilisation
○ Les méthodes d'interaction ○ Les paramètres
● Traitement itératif ○ Les fonctions fléchées
○ La structure « while » ○ Les « Callback »
○ La structure « do…while » ● Les timers
○ La structure « for » ○ Timeout
○ Instructions « continue » et « break » ○ Interval
● Les collections indexées ● Interaction avec le DOM - Les événements
○ Déclaration et utilisation ○ Abonnement aux events
○ Les méthodes des collections ○ Variable de l'événement
● Traitement itératif - Les collections ○ Types d’events des éléments du DOM
○ Les structures itératives ○ Types d’events de « Window »
○ La méthode « [Link] » ● Les exceptions
○ La structure « for…of » ○ L’instruction « try … catch … finally »
○ La structure « for…in » ○ Déclencher une exception
Table des matières
● Interaction avec le DOM - Les formulaires ● Annexes
○ Objectif des formulaires ○ Aperçu des méthodes sur les types
○ Manipulation les formulaires ○ Les collections à clefs : Map et Set
○ L’API de validation des contraintes ○ Évaluation en court-circuit
● Les promesses ○ Le destructuring
○ Déclaration et utilisation ● Références
○ Les méthodes des promesses
○ Les fonctions asynchrones
Introduction
Le JavaScript, c’est quoi ?
Introduction
Le langage JavaScript
Créé en 1995 par Brendan Eich et intégré au navigateur Netscape, celui-ci est utilisé
pour permettre de réaliser la validation des formulaires par le navigateur.
Ensuite, il a rapidement évolué pour devenir un langage puissant et polyvalent.
● Depuis un fichier « js »
Déboguer son code
Les navigateurs web permettent d’avoir accès à un outil de développement.
La console permet de voir les messages envoyés par le code ou d’en exécuter.
Bien que ces méthodes d'interaction soient simple à utiliser, il ne faut pas en abuser.
Il sera toujours préférable d’interagir à l’aide de la page Web (via l’API du DOM), pour
offrir une meilleur expérience à l’utilisateur.
Interaction avec le navigateur
Afficher un message via le navigateur :
Cette variante est appelée le « Strict Mode », elle apporte les changements suivants :
● Élimination d’erreurs silencieuses, en les transformant en erreurs explicites.
● Interdiction de mots-clefs susceptibles d’être utilisés dans les futures versions.
● Correction des erreurs pour permettre une meilleure optimisation par les moteurs
JavaScript (Un même code sera donc exécuté plus rapidement en mode strict).
Bien évidemment, les commentaires ne sont pas interprétés par le moteur JavaScript.
Les variables
Déclaration de variable
Les variables
Déclaration de variable
Il existe trois manières de déclarer des variables en JavaScript :
● Variable globale modifiable « var »
● Variable locale modifiable « let »
● Variable locale immuable « const »
var ✔ ✔ ❌ ✔ ✔ ✔
let ❌ ✔ ✔ ✔ ❌ ❌
const ❌ ✔ ✔ ❌ ❌ ❌
Nommer une variable
Le nom d’une variable peut contenir les caractères suivants :
● des caractères alphanumériques
● des underscores
● des dollars
Le nom de la variable doit commencer par un dollar, un underscore ou une lettre.
Bonne pratique :
La convention de nommage pour les variables est le « camelCase ».
Le typage
Les variables
Le typage
Le JavaScript est un langage à typage dynamique.
Bonne pratique :
Ne pas utiliser une même variable pour stocker plusieurs types de données !
Les types de valeurs
En JavaScript, ce sont des « pseudo-objets » qui permettent de définir les différents
types de donnée avec leurs propriétés et leurs méthodes.
● Number : Un nombre (entier ou réel)
● BigInt : Un grand nombre entier
● String : Une chaîne de caractères
● Boolean : Type dont les valeurs possibles sont « true » ou « false »
● Undefined : Variable non initialisée
● Null : Variable initialisée sans aucune valeur
● Object : Élément complexe possédant plusieurs valeurs
Aperçu de quelques types de données
● Un nombre entier ● Un tableau de nombre
● Un booléen ● Un objet
Obtenir le type d’une variable
L'opérateur « typeof » permet d'obtenir le type d’une variable.
Le type est renvoyé sous la forme d’une chaîne de caractères.
● .innerHTML
Permet d’obtenir ou modifier le contenu html de la balise.
● .textContent
Permet d’obtenir ou modifier le contenu textuel de la balise.
Le code HTML est automatiquement échappé.
Quelques propriétés des éléments du DOM
● .className
Permet d’obtenir ou modifier la valeur de l'attribut « class » de la balise.
● .classList
Permet d'interagir avec la valeur de l'attribut « class » de la balise via les méthodes :
➔ add(...) : Ajoute les classes spécifiées
➔ remove(...) : Supprime les classes spécifiées
➔ contains(...) : Vérifie la présence de la classe spécifiée
➔ replace(..., …) : Replace une classe par la nouvelle classe
➔ toggle(...) : Ajoute ou supprime la classe spécifiée
Quelques propriétés des éléments du DOM
● .firstElementChild / .lastElementChild
Permet d’obtenir respectivement le premier et le dernier élément de la balise.
● .children
Permet d’obtenir une collection avec tous les éléments enfants de la balise.
● .valueAsNumber
Permet d’obtenir ou modifier la valeur d’une balise « input » en type « number ».
Cette propriété n’est disponible que sur des balises de type « number » et « date ».
● .valueAsDate
Permet d’obtenir ou modifier la valeur d’une balise « input » en type « Date ».
Cette propriété n’est disponible que sur des balises de type « date ».
Propriétés des balises de saisie de l’utilisateur
● .checked
Permet d’obtenir ou modifier l’état une balise « input » de type « checkbox ».
● .disabled
Permet d’obtenir l’état de désactivation de la balise, et de modifier sa valeur.
Lorsqu'une balise est désactivé, elle n’est plus cliquable ou focusable.
● .readOnly
Permet de savoir si la balise est en lecture seule, et de modifier sa valeur.
Cette propriété fonctionne uniquement sur les balises de saisie de contenant du texte.
Interagir à l'événement « click » d’un élément
La méthode « .addEventListener('click', ...) » permet d’ajouter un code “en sommeil” sur
l'événement clique de l’élément ciblé.
Rappel :
Pour tester que la valeur est « NaN », il faut utiliser la méthode « isNaN(...) »
Convertir en nombre - Entier
La méthode « parseInt » permet d’obtenir la valeur entière d’une chaîne de caractères.
Celle-ci prend en paramètres :
➔ La chaîne de caractères à convertir
➔ La base (par défaut : 10)
Convertir en nombre - Réel
La méthode « parseFloat » permet d’obtenir la valeur d’un réel.
Celle-ci ne prend qu’un seul paramètre :
➔ La chaîne de caractères à convertir.
Les opérateurs arithmétiques
Le langage JavaScript supporte les
opérateurs arithmétiques suivants :
● Addition
● Soustraction
● Multiplication
● Division
● Modulo
● Puissance
Les opérateurs arithmétiques
Le langage JavaScript permet de
combiner un opérateur d’affectation avec
un opérateur arithmétique.
Les opérateurs d’incrément et de décrément
Le langage JavaScript permet de réaliser
des actions d’incrémentation et de
décrémentation à l’aide d’un raccourci
d'écriture.
Deux possibilités :
● Post-Action :
Après l’utilisation de la variable.
● Pré-Action :
Avant l’utilisation de la variable.
Les constantes de « Number »
Quelques constantes utiles du pseudo-objet« Number » :
Les méthodes de « Number »
Quelques méthodes utiles du pseudo-objet« Number » :
Remarque : Il n’est pas autorisé d’utiliser les opérateurs arithmétiques avec un autre
type de donnée. Les deux valeurs doivent être de type « BigInt ».
String
Les types de données
Les chaînes des caractères
Les chaînes des caractères sont stockées dans des variables de type « String ».
Le contenu d’une chaîne de caractères doit être déclaré entre des guillemets.
C’est un type de donnée immuable, c'est-à-dire qu’il n’est pas possible de modifier son
contenu une fois que celle-ci a été créée.
{} Object Un objet
[] Array Un tableau
Pour éviter cette erreur, il est possible d’utiliser l’opérateur « Optional chaining ».
L’opérateur fonctionne comme la notation « . », sauf qu’il ne déclenche pas d’erreur sur
les objets « null » ou « undefined », à la place, la valeur « undefined » est renvoyé.
Les Dates
L’objet de type « Date »
Les Dates
Les objets de type « Date »
Le type « Date » permet de représenter une date/heure en JavaScript.
Une date est stockée sous la forme d’un entier qui correspond au nombre de
millisecondes écoulées depuis le premier janvier 1970 (UTC).
● .getMonth() / .setMonth(indexMois)
Permet d’obtenir ou de modifier l’index (0-11) représentant le mois d’une date.
● .getFullYear() / .setFullYear(nbAnnée)
Permet d’obtenir ou de modifier la valeur de l’année d’une date.
Getter et setter d’une date
● .getHours() / .setHours(nbHeure)
Permet d’obtenir ou de modifier la valeur de l’heure d’une date.
● .getMinutes() / .setMinutes(nbMinute)
Permet d’obtenir ou de modifier la valeur des minutes d’une date.
● .getSeconds() / .setSeconds(nbSeconde)
Permet d’obtenir ou de modifier la valeur des secondes d’une date.
Getter et setter d’une date
● .getMilliseconds() / .setMilliseconds(nbMilliseconde)
Permet d’obtenir ou de modifier la valeur des millisecondes d’une date.
● .getDay()
Permet d’obtenir la valeur du jour de la semaine (0-6) d’une date. (0 = Dimanche)
● .getTime()
Permet d’obtenir en millisecondes le temps écoulées depuis le premier janvier 1970.
Convertir une date en chaîne de caractères
● .toString()
Renvoie la date formatée en chaîne de caractère.
Exemple : « Tue Aug 19 1975 23:15:30 GMT+0000 (Coordinated Universal Time) »
● .toISOString()
Renvoie la date formatée avec la norme ISO 8601 : YYYY-MM-DDTHH:mm:[Link]
● .toJSON()
Renvoie la date formatée en JSON (en utilisant la méthode « toISOString »).
Convertir une date en chaîne de caractères
● .toLocaleString(locale, options)
Renvoie la date formatée en chaîne de caractère en tenant compte de la locale.
Les « options » permet de préciser le contexte de formatage.
● .toLocaleDateString(locale, options)
Même comportement que « toLocaleString » limité à la date.
● .toLocaleTimeString(locale, options)
Même comportement que « toLocaleString » limité à l'heure.
Les opérateurs
Les opérateurs d’égalité
Les opérateurs
Les différents opérateurs d’égalité et d’inégalité
Le langage Javascript possède deux types opérateurs : faible et strict.
Si les valeurs comparées sont d’un autre type, le moteur Javascript tentera de convertir
les valeurs non-numériques et ensuite de réaliser une comparaison numérique.
● || : Le OU logique
Renvoie « true » si au moins une des deux opérandes est « true ».
● ! : Le NON logique
Renvoie la valeur booléenne inversée de son opérande.
Traitement conditionnel
La structure « if…else »
Traitement conditionnel
Le « if…else »
La structure « if…else » permet d'exécuter du code en fonction de condition(s).
Elle peut être constituée de 3 blocs de code :
● if : Condition initiale à tester [Obligatoire]
● else if : Condition à tester si les précédentes sont fausses
● else : Si aucune condition n’a été validée
Syntaxe :
Exemple de structure « if…else »
La structure « switch »
Traitement conditionnel
Le « switch »
La structure « switch » permet d'exécuter du code en fonction d’une égalité stricte
Syntaxe :
Exemple de structure « switch »
L’opérateur « ternaire »
Traitement conditionnel
L’opérateur ternaire
Cet opérateur permet d’affecter une variable sur base d’une condition.
Il est souvent utilisé comme raccourci pour la déclaration d’un « if...else ».
Remarque : L’élément sera créé en mémoire, mais il ne sera pas ajouté à la page Web.
Les méthodes d'interaction
Interaction avec le DOM - Modifier la page
Les méthodes d'interaction
Les éléments HTML héritent des classes « Node » et « Element », celles-ci possèdent
plusieurs méthodes qui permettent d’interagir avec la page Web.
Remarque : Un élément déjà présent dans la page sera déplacé, lorsqu’il est re-ajouté.
Ajouter un élément enfant
● [Link](element)
Permet d’ajouter un élément en tant que dernier enfant de la balise parent.
● [Link](element, referenceElement)
Permet d’ajouter un élément dans la balise parent avant un élément de référence.
Ajouter un élément enfant
● [Link](element1, …, elementN)
Permet d’ajouter des éléments en tant que derniers enfants de la balise parent.
● [Link](element1, …, elementN)
Permet d’ajouter des éléments en tant que premiers enfants de la balise parent.
Insérer un élément adjacent
● [Link](position, element)
Permet d'insérer un élément à une position par rapport à l’élément de référence.
La position où celui-ci est ajouté dépend de la valeur du paramètre :
- beforebegin : Avant l’élément de référence.
- afterbegin : En premier enfant à l’intérieur de l’élément de référence.
- beforeend : En dernier enfant à l’intérieur de l’élément de référence.
- afterend : Après l’élément de référence.
Insérer un élément adjacent
● [Link](element1, …, elementN)
Permet d'insérer des éléments avant l’élément référence.
● [Link](element1, …, elementN)
Permet d'insérer des éléments après l’élément référence.
Supprimer un élément
● [Link](targetElement)
Permet de supprimer l’élément ciblé de la balise parent.
● [Link]()
Permet de supprimer l’élément ciblé.
Traitement itératif
La structure « while »
Traitement itératif
Le « while »
La structure « while » permet de répéter l'exécution d’un bloc de code.
Fonctionnement de la boucle :
● Test de la condition.
● Si la condition est « vraie », exécution du code
● Retour à la condition
Syntaxe :
Exemple de structure « while »
La structure « do…while »
Traitement itératif
Le « do…while »
La structure « do…while » permet d'exécuter un bloc de code et de le répéter.
Fonctionnement de la boucle :
● Exécution du code
● Test de la condition.
● Si la condition est « vraie », retour à l’exécution du code
Syntaxe :
Exemple de structure « do…while »
La structure « for »
Traitement itératif
Le « for »
La structure « for » est une boucle qui possède un bloc de code d’initialisation et final.
Fonctionnement de la boucle :
● Exécution du code d’initialisation
● Test de la condition.
● Si la condition est « vraie », exécution du code de la boucle et du code final.
● Retour à la condition
Syntaxe :
Exemple de structure « for »
Instructions « continue » et « break »
Traitement itératif
Les instructions d’une structure itérative
Les mots clefs « continue » et « break » sont deux instructions pouvant être utilisées
dans une structure itérative.
● continue
Permet d’arrêter le traitement actuel et de passer à l'itération suivante de la boucle.
● break
Permet de terminer la boucle et de passer au code suivant.
Les collections indexées
Déclaration et utilisation
Les collections indexées
C’est quoi une collection indexée ?
Une collection indexée est une structure de données qui permet de stocker un
ensemble de valeurs dans une variable et de les rendre accessibles à l’aide d’un index.
Si on affecte une valeur à un index supérieur à l’index maximum, l’élément est ajouté.
Les objets de type « Array »
Les méthodes « [Link](...) » et « [Link](...) » permettent de visualiser
facilement le contenu du tableau dans le terminal
Les objets de type « Array »
La propriété « length » permet d’obtenir la longueur du tableau.
● .shift()
Permet d’obtenir et de supprimer le premier élément de la collection
Ajouter et supprimer des éléments
● .splice(indexDebut, deleteCount [, element1, ..., elementN])
Permet de supprimer de 0 à plusieurs éléments à partir de l’index reçu et ensuite
d’ajouter de 0 à plusieurs éléments sur la collection.
● .toString()
Renvoie une chaîne de caractères représentant le tableau spécifié et ses éléments.
Cette méthode génère le même résultat que la méthode « .join() ».
Trier les éléments
● .sort([methodeComparaison])
Permet de trier les éléments d’un tableau sur base d’une méthode qui doit retourner un
nombre positif, négatif ou zéro.
● .toSorted([methodeComparaison])
Traitement identique à la méthode « .sort(...) » sauf que celle-ci crée une copie de la
collection qui est modifiée et renvoyée.
Inverser l’ordre des éléments
● .reverse()
Permet d’inverser l’ordre des éléments d’un tableau sur base d’une fonction qui doit
retourner un nombre positif, négatif ou zéro.
● .toReversed()
Traitement identique à la méthode « .reverse(...) » sauf que celle-ci crée une copie de la
collection qui est modifiée et renvoyée.
Fusionner des tableaux
● .concat(element1, ..., elementN)
Permet de générer un tableau en fusionnant deux ou plusieurs tableaux.
Extraire des portions de tableaux
● .slice([start, [end]])
Permet de générer un tableau qui contient la copie d’une portion du tableau cible.
La portion sélectionnée dans le tableau est définie par des index.
Rechercher un élément
● .includes(elementRecherché [, indiceDebut]);
Permet de déterminer si le tableau contient une valeur recherchée.
● .some(methodeRecherche)
Permet de déterminer si le tableau contient une valeur sur base d’une méthode de test.
Obtenir un élément
● .find(methodeRecherche) / .findLast(methodeRecherche)
Permet d’obtenir la première ou dernière valeur correspondant à une méthode de test.
Appliquer un filtre à la collection
● .filter(methodeFiltre)
Permet d’obtenir la copie filtrée d’un tableau sur base d’une fonction.
Transformer la collection
● .map(methodeTransformation)
Permet d’obtenir la copie modifiée d’un tableau sur base d’une fonction.
Traitement itératif
- Les collections -
Les structures itératives
Traitement itératif - Les collections
Parcourir une collection avec une boucle
Pour parcourir les différents éléments d’une collection indexée, il est possible d’utiliser
les structures itératives précédemment abordées :
● « while »
● « do…while »
● « for »
Pour cela, il sera souvent nécessaire de créer une variable qui nous permettra de définir
la condition de fin de boucle, pour éviter de “sortir” de la collection.
Exemple avec la structure « while »
Exemple avec la structure « for »
Les autres boucles pour les collections
Bien que ces structures itératives soient suffisantes, le langage JavaScript propose
d’autres solutions pour manipuler les collections.
Syntaxe :
Exemple de la méthode « forEach »
Limitation de la méthode « forEach »
La méthode « forEach » parcourt la totalité des éléments de la collection.
Il n’est pas possible d’arrêter le traitement d’une boucle « forEach », à part en
déclenchant une exception (code d’erreur).
Syntaxe :
Exemple de structure « for .. of »
La structure « for…in »
Traitement itératif - Les collections
Le « for .. in »
La structure « for .. in » permet de parcourir les propriétés énumérables d’un objet.
Bien que cette boucle permet de parcourir les collections, il n’est pas recommandé de
l’utiliser car :
● Elle ne permet pas de garantir l’ordre de parcours de la collection.
● Elle manipule les index (int) sous la forme de chaîne de caractères (string)
Syntaxe :
Exemple de structure « for .. in »
Les fonctions
Déclaration et utilisation
Les fonctions
Déclaration d’une fonction
Les fonctions permettent de stocker un
bloc de code et de l'exécuter.
● .target
Identifie l'élément à partir duquel l'événement s'est déclenché.
● .currentTarget
Identifié la cible pour l'évènement lorsque celui-ci traverse le DOM (via la propagation).
Celle-ci fait toujours référence à l’élément sur lequel l’abonnement a été réalisé.
Quelques méthode de la variable de l'événement
● .preventDefault()
Annule l’action par défaut de l’événement.
● .stopPropagation()
Arrête la propagation de l’événement aux éléments parents.
● .stopImmediatePropagation()
Arrête la propagation de l’événement à élément en cours et aux éléments parents.
Types d’events des éléments du DOM
Interaction avec le DOM - Les événements
Liste non exhaustive des events
● click ● keydown
Clique sur un élément. Une touche est pressée.
● dblclick ● keyup
Double clique sur un élément. Une touche est relâchée.
● mousemove
Le curseur est déplacé.
Liste non exhaustive des events
● change ● submit
La valeur d'une balise a été modifiée. Le formulaire a été validé.
● input ● reset
La valeur d'une balise est modifié, Le formulaire a été réinitialisé.
cet event se déclenche en temps réel.
● formdata
● invalid Génération d’un objet « FormData »,
Le contenu d’un balise input est invalide. celui-ci contient les données du form.
Types d’events de « Window »
Interaction avec le DOM - Les événements
Liste non exhaustive des events de Window
● load ● online
La page et toutes ses dépendances sont Le navigateur a obtenu l'accès au réseau
complètement chargées. et « [Link] » passe à true.
● beforeunload ● offline
La page va être déchargée. Permet Le navigateur perd l'accès au réseau
d'interrompre la fermeture de celle-ci. et « [Link] » bascule à false.
● languagechange
La langue préférée (via le navigateur) de
l'utilisateur a été changée.
Les exceptions
L’instruction « try … catch … finally »
Les exceptions
L’instruction « try … catch … finally »
Le « try » permet d'exécuter un bloc de code dans lequel une erreur pourrait survenir.
Cette instruction ne peut pas être utilisée seule. Celle-ci doit être suivie de minimum
une des clauses suivantes :
- La clause « catch » : Code permettant de réagir à l’exception.
- La clause « finally » : Code qui sera toujours exécuté.
L’event « reset » permet d'interagir sur la remise à zéro d’un formulaire avant que les
données ne soit effacé.
L’API de validation des contraintes permet d’ajouter facilement des règles de validation
sans devoir gérer manuellement le comportement du navigateur.
Elle permet :
● D’obtenir l’état de validation des champs.
● De définir un champs en erreur.
Les propriétés de l'API de validation des contraintes
● .validity
Un objet avec l’états (booléen) des différentes contraintes à valider
● .validationMessage
Le message d’erreur lorsqu’une contrainte est invalide.
Sinon, la propriété contient une chaîne de caractère vide
● .willValidate
Valeur booléen qui indique si l’élément doit être validé.
Les méthodes de l'API de validation des contraintes
● .checkValidity()
La méthode renvoi « true » si l'élément n'a pas de problème de validation.
Sinon, elle renvoi « false » et déclenche également l’évent « invalid ».
● .setCustomValidity(message)
Permet de définir une erreur personnalisé sur un élément avec son message d’erreur.
Cet élément sera considéré comme invalide par le formulaire.
Si l’argument est une chaîne de caractères vide, elle supprime l’erreur personnalisé.
Exemple d’erreur personnalisé sur un champ
Les promesses
Déclaration et utilisation
Les promesses
C’est quoi une promesse ?
Le mécanisme des promesses permet à une méthode de renvoyer un objet de
type « Promise », alors que celle-ci n’a pas encore terminé sa tâche.
Cet objet représente littéralement la promesse faite par cette méthode de transmettre
un résultat une fois sa tâche accomplie.
Les promesses sont généralement utilisées pour réaliser des actions asynchrones en
JavaScript et cela permet d’éviter d’avoir recours au mécanisme des callbacks.
L’objet de type « Promise »
Un objet « promise » représente donc une valeur qui peut être disponible maintenant,
dans le futur, voire jamais.
Ces méthodes renvoient également une promesse, ce qui permet de les enchaîner.
Exemple d’utilisation d’une promesse
Enchaîner des promesses
Les méthodes « then», « catch » et « finally » renvoient toutes des promesses.
Ce qui permet de pouvoir les chaînées.
Enchaîner des promesses
Exemple avec quatre promesses chaînés
Les méthodes des promesses
Les promesses
Méthode pour créer des promesses terminées
● [Link]( [data] )
Créer un objet du type « Promise » qui est résolu avec la valeur donnée.
● [Link]( [reason] )
Créer un objet du type « Promise » qui est rejeté avec la cause.
Méthode pour utiliser des promesses en parallèle
● [Link](promiseCollection)
Créer une promesse qui attend que toutes les promesses reçues soit résolue.
Elle renvoie le résultat de chaque promesse dans une collection.
Dès qu’une des promesse est rejeté, celle-ci passe en état « rejected ».
Si la collection reçu est vide, la promesse sera résolue avec une collection vide.
Méthode pour utiliser des promesses en parallèle
● [Link](promiseCollection)
Créer une promesse qui attend que toutes les promesses reçues soit terminé.
Elle renvoie le résultat de chaque promesse (fulfilled ou rejected) dans une collection.
Si la collection reçu est vide, la promesse sera résolue avec une collection vide.
Méthode pour utiliser des promesses en parallèle
● [Link](promiseCollection)
Créer une promesse qui attend qu’une des promesses reçues soit résolue.
Elle renvoie le résultat de la première promesse résolue.
Si toutes les promesses sont rejetées, celle-ci passe en état « rejected ».
Si la collection reçu est vide, la promesse sera rejeté avec une “AggregateError”.
Méthode pour utiliser des promesses en parallèle
● [Link](promiseCollection)
Créer une promesse qui attend qu’une des promesses reçues soit terminée.
Elle renvoie le résultat de la première promesse terminé (fulfilled ou rejected).
Si la collection reçu est vide, la promesse sera continuellement en attente.
Les fonctions asynchrones
Les promesses
Les fonctions asynchrones
Une fonction peut être déclaré en tant
que fonction asynchrone, pour cela, il est
nécessaire de la précéder de « async ».
Celle-ci peut contenir des promesses
précédées du mot clef « await ».
Ce qui interrompt son exécution et
attend la résolution de la promesse.
● .toLocaleString(locale, options)
Renvoie le nombre formaté en chaîne de caractère en tenant compte de la locale.
Les « options » permettent de préciser le contexte de formatage (décimal, monnaie… ).
Méthodes des variables de type « string »
● .indexOf( ‘valeur cherchée’ ) / .lastIndexOf( ‘valeur cherchée’ )
Permet d’obtenir l'indice de la première ou dernière occurrence de la valeur cherchée
dans la chaîne de caractères. Si la valeur cherchée n'est pas trouvée, elle renvoie -1.
● .toLocaleUpperCase(locale) / .toLocaleLowerCase(locale)
Renvoie une copie de la variable en majuscule ou minuscule en respectant la locale.
● .replaceAll(‘cible’ , ‘remplacement’)
Renvoie une nouvelle chaîne dans laquelle toutes les occurrences de la chaîne ‘cible’
sont remplacées par la chaîne ‘remplacement’.
● .slice(indiceDebut [, indiceFin] )
Renvoie une chaîne de caractère commençant à l’indice de début et jusqu'à l'indice de
fin. Contrairement à la méthode substring, celle-ci peut utiliser des valeurs négatives.
● .split(‘separateur’)
Permet d’obtenir un tableau avec le contenu de la chaîne divisé par le séparateur.
La collection à clefs « Map »
Annexes
Les objets de type « Map »
Un objet « Map » permet de stocker des éléments sous la forme de « Clef / Valeur ».
Les clefs peuvent être de n'importe quel type de valeur (primitive ou objet).
● .get(clef)
Renvoie la valeur liée à la clef. Si aucune valeur n’est trouvée, elle renvoie « undefined ».
● .has(clef)
Renvoie un booléen pour indiquer si la clef est présente dans l’objet « Map ».
Méthodes sur un objet de type « Map »
● .delete(clef)
Permet de supprimer un élément à l’aide de sa clef.
Cette méthode renvoie « true » si l’élément existe et qu’il a bien été supprimé.
● .clear()
Permet de supprimer tous les éléments.
● .forEach (méthode)
Permet d’effectuer un traitement itératif. (Identique à la méthode forEach() des Array)
Propriété sur un objet de type « Map »
La propriété « size » permet d’obtenir le nombre d’éléments de l’objet « Map ».
Exemple de l’utilisation d’un objet « Map »
La collection à clefs « Set »
Annexes
Les objets de type « Set »
Un objet « Set » permet de stocker des éléments sous la forme de clef unique.
Les clefs peuvent être de n'importe quel type de valeur (primitive ou objet).
● .has(clef)
Renvoie un booléen pour indiquer si la clef est présente dans l’objet « Set ».
Méthodes sur un objet de type « Set »
● .delete(clef)
Permet de supprimer une clef.
Cette méthode renvoie « true » si l’élément existe et qu’il a bien été supprimé.
● .clear()
Permet de supprimer toutes les clefs.
● .forEach (méthode)
Permet d’effectuer un traitement itératif. (Identique à la méthode forEach() des Array)
Propriété sur un objet de type « Set »
La propriété « size » permet d’obtenir le nombre d’éléments de l’objet « Set ».
Évaluation en court-circuit
Annexes
Évaluation en court-circuit
Le JavaScript permet d’utiliser les opérateurs logiques pour créer un « court-circuit »
lors de l’évaluation d’une instruction.
● Échange de variables
Le destructuring permet également d'inverser le contenu de variables.
Décomposition d’objet
● Déclaration de variable et initialisation
La valeur des variables est basée sur le nom des clefs de l’objet ciblé.
Décomposition d’objet
● Affectation sans déclaration
Il est possible d’utiliser le destructuring pour uniquement affecter des variables.
Il est également possible de définir une valeur par défaut en plus du nom de variable.
Décomposition d’objet
● Décomposition imbriquée
Décomposition d’objet
● Décomposition d’un paramètre d’une fonction
Lorsqu’on créer une méthode, il est possible d’utiliser le destructuring pour définir le
nom des paramètre de l’objet attendu et si nécessaire la valeur par défaut de ceux-ci.
Références
Références
● MDN Web Docs
[Link]