Solpdf
Solpdf
documentations
JavaScript
1. [Link]
Mise en situation
Le MDN (Mozilla Developer Network) est un site communautaire de documentations et tutoriels sur
les technologies du Web, comme HTML, CSS, JavaScript ou encore le protocole HTTP.
Fondamental
[Link]
Objets natifs : contient l'ensemble des objets natifs standard (Array, Date, etc.), y
compris leurs méthodes et propriétés.
Expressions & opérateurs : présente les mots-clés basiques (this, function, class,
etc.), les opérateurs arithmétiques, d'affectation et de manière générale toutes les
expressions du langage.
Instructions et déclarations : c'est là que se trouve les if...else, ainsi que les
déclarations var, let et const.
Errors : contient toutes les erreurs, exceptions et avertissements que l'interpréteur
JavaScript peut retourner.
Ensuite, la partie Syntaxe contient toutes les informations importantes, par exemple :
Les paramètres pouvant être mis en entrée de la méthode ainsi que sa valeur de retour.
Les paramètres entre crochets ([]) sont optionnels.
La fonction servant à réaliser le mapping doit avoir des argument spécifiques.
La suite de la page contient un descriptif plus détaillé pour comprendre comment la méthode
fonctionne, de potentiels avertissements, des bonnes pratiques et des exemples. Il y aussi
des informations sur l'introduction de la méthode dans la spécification, ce qui peut être utile
pour les développeurs travaillant avec d'anciennes versions.
Enfin, il y a généralement un tableau de compatibilité avec les navigateurs pour les
développeurs dont le code est destiné au Web.
À la toute fin de la page, on trouve une partie Voir aussi qui contient généralement des
méthodes/fonctions proches qui parfois sont plus adaptées à ce que veut faire le
développeur.
Pour map, MDN propose aussi de voir forEach qui est dans certains cas plus adaptée que
map.
À retenir
MDN est un site communautaire de documentations, avec une documentation JavaScript
très complète.
Chaque page contient quasiment la même structure.
Elle est divisée en grandes catégories pour rendre la recherche d'informations simple.
Complément
MDN JavaScript ([Link])2
2. [Link]
Indice :
Il y a un exemple de comment undefined est utilisé dans un if sur sa page MDN.
3. [Link]
Mise en situation
Un langage de programmation tel que le JavaScript est simple à prendre en main mais il n'est pas
possible de tout connaître dans les moindres détails. De plus il arrive régulièrement d'avoir besoin
d'utiliser, pour la première fois, des fonctionnalités très précises du langage, même après plusieurs
années de pratique. Pour cela des sites comme MDN sont très intéressants et les ressources
mises à disposition permettent d'approfondir ses connaissances et ainsi que de mieux
comprendre le langage que l'on utilise.
Conseil
MDN permet d'approfondir certaines notions afin de découvrir de nouveaux cas d'utilisations
ou pour répondre à un problème spécifique. Il est recommandé de parcourir la documentation
pour compléter ses connaissances.
Le code ci-dessus renvoie l'erreur TypeError: Assignment to constant variable car pi est
protégé par const.
Cependant, la page Types et grammaire du MDN4 nous apprend que les valeurs d'un objet,
même déclaré avec const ne sont pas protégées.
1 const pi = { value: 3.1415, description: "Pi est le rapport constant de la
circonférence d'un cercle à son diamètre dans un plan euclidien" }
2 [Link] = 3.1416
3
4
Ainsi, ce code ne renvoie pas d'erreur et une valeur présente dans un objet déclaré avec
const a été modifiée.
4. [Link]
Dans l'exemple ci-dessus, on imagine un service de messagerie qui aurait besoin de stocker
les messages d'un utilisateur à une base de données.
La fonction [Link]() prend en argument un tableau contenant le message,
l'utilisateur, l'heure d'envoi sommé à la différence de minutes à l'heure UTC pour obtenir
l'heure UTC et en dernier argument le fuseau horaire.
Ici, getTimezoneOffset() est multiplié par 600 pour obtenir des secondes car
[Link]() est en millisecondes.
5. [Link]
6. [Link]
À retenir
Il est primordial de s'instruire sur les pages du MDN pour approfondir ses connaissances et
éviter les erreurs que nous avons vu.
Le modificateur const ne protège pas les valeurs des objets et des tableaux.
BigInt est à privilégier avec de très grands entiers.
7. [Link]
Indice :
Il faut regarder du côté des méthodes.
8. [Link]
Mise en situation
Une bonne partie du travail d'un développeur consiste à s'approprier des fonctions, objets,
méthodes pour résoudre un problème au lieu de développer lui-même des fonctionnalités, de ré-
inventer la roue.
Il est utile de se renseigner sur les fonctions disponibles en rapport avec les chaînes de caractères.
La page MDN des « Strings »9 est faite pour ça.
Chaque méthode, fonction ou objet est cliquable et a sa propre page avec un exemple, voici
quelques méthodes intéressantes :
Exemple
concat : pour concaténer au moins deux chaînes ensemble.
1 const hello = "Bonjour"
2 const world = "tout le monde"
3
4 [Link]([Link](' ', world))
5 // affiche "Bonjour tout le monde"
Exemple
includes : renvoie true si une chaîne contient la chaîne donnée comme argument.
1 const names = ['Alice', 'Jean-Marie', 'Charlie']
2
3 for (const name of names) {
4 [Link](`Le prénom ${name} ${[Link]('-') ? 'est' : "n'est pas"}
composé`)
5}
6 // Pour chaque prénom, affiche qu'il est composé si il inclut le caractère -
(trait d'union).
7
La page de la méthode includes indique aussi que cette dernière est sensible à la casse.
9. [Link]
Exemple
split : divise une chaîne selon un séparateur et renvoie un tableau avec les différents
éléments.
1 let receivedInfo = 'Luke:Skywalker:[Link]@[Link]:Jedi Master'
2 receivedInfo = [Link](':')
3
4 const luke = {
5 firstname: receivedInfo[0],
6 lastname: receivedInfo[1],
7 email: receivedInfo[2],
8 title: receivedInfo[3]
9}
10
11 [Link](luke)
À retenir
Il est très simple de trouver toutes les fonctions/méthodes autour d'un objet JavaScript.
Chaque page contient aussi des informations sur la manière qu'a JavaScript d'interpréter le
code.
Indice :
Les méthodes slice et substring permettent de découper la chaîne de caractères.
Mise en situation
Le JavaScript, à l'instar de beaucoup de langages, possède un système de gestion d'erreur.
Quand l'interpréteur traite du code problématique, il peut retourner une erreur standard à
destination du développeur, qu'il est essentiel de savoir interpréter et corriger adéquatement.
10. [Link]
Le code ci-dessus pourrait paraître normal pour un développeur Python qui s'est habitué à
utiliser le mot-clé in pour savoir si une chaîne se trouve dans une autre.
En JavaScript, ce code renvoie une erreur.
Une consultation de la page MDN de cette erreur11 explique que in ne fonctionne que sur les
objets (pour vérifier si une propriété existe), et non sur les chaînes de caractères.
À retenir
Il faut être capable d'analyser les erreurs en les cherchant sur le MDN pour résoudre
efficacement un problème.
11. [Link]
12. [Link]
Et sur Chromium :
1 SyntaxError: Unexpected token 'debugger'
Indice :
On pourra par exemple chercher le mot-clé debugger dans le MDN, ou chercher l'erreur elle-
même.
Mise en situation
Ce qui est intéressant avec les langages de programmation répandus, c'est la forte activité de la
communauté qui permet de le faire évoluer et de le documenter. MDN n'est pas le seul site à
proposer des ressources intéressantes pour les développeurs, il en existe d'autres, certains
maintenus par la communauté. Selon les besoins, il peut s'agir de documentation, de forums pour
demander de l'aide, ou de listes de discussions pour faire remonter des anomalies dans le langage.
[Link]
DevDocs13 est un site web qui, à l'instar du MDN, propose une documentation des technologies du
Web (HTML/CSS/HTTP/JS) mais aussi de librairies et frameworks (jQuery, Angular, etc.).
Dans les préférences (à droite de la barre de recherche), il est possible de ne garder que la
documentation JavaScript.
Toujours dans les paramètres, le bouton Offline Data mène à une page qui propose de télécharger
la documentation JavaScript en cliquant sur le bouton Install à droite de la page.
Une fois le téléchargement terminé, le site est accessible même sans connexion à Internet.
13. [Link]
B Les PEP
C ECMAScript
Exercice
Pourquoi le JavaScript a t-il été conçu ?
Exercice
Lequel de ces éléments n'est pas un objet standard du JavaScript ?
A Number
B Error
C Array
D Integer
14. [Link]
Exercice
Comment savoir si au moins un élément d'un tableau myArray, de type Array, remplit une
certaine condition ?
A [Link]()
B [Link]()
C [Link]()
Exercice
Est-il possible d'utiliser des fonctions fléchées (Arrow Functions) dans la version 20 de Firefox ?
A Oui
B Non
Exercice
JavaScript ne fait pas la différence, en termes de types, entre nombre entier et nombre flottant.
Quelle fonction permet de vérifier si une variable age de type Number représente un nombre
entier ?
A [Link](age)
B [Link]
C [Link]()
D isInteger(age)
15. [Link]
16. [Link]
Exercice
La fonction suivante remplace .com par .fr dans la chaîne domain
1 function goToFrench(domain) {
2 return domain.___(/.com/, ".fr")
3}
4
5 [Link](goToFrench("[Link]"))
6 // outputs: [Link]
A change
B match
C endsWith
D replace
Exercice
db est une variable qui permet d'interagir avec une base de données. Le développeur veut
stocker les noms de familles en majuscules.
1 function storeUserToDatabase(email, firstname, lastname) {
2 [Link](email, firstname, lastname.___()
3}
A toUpper
B toUpperCase
C goBig
Exercice
La fonction ci-dessous cherche à surveiller le trafic sur un site web.
Si le nombre de connections dépasse un certain nombre, le type Number ne pourra pas
représenter adéquatement ce nombre ; il faudra utiliser une variable de type BigInt.
1 function monitorTraffic() {
2 let numberOfConnections = getNumberOfConnections()
3
4 if(numberOfConnections >= Number.___)
5 numberOfConnections = BigInt(numberOfConnections)
6 }
7
8 ...
9}
A MAX_SAFE_INTEGER
B MAX_INTEGER
C MAX_SAFE
D MAX_VALUE
Indice :
Les Set sont des objets natifs.
17. [Link]
Il suffit de retirer les guillemets (") autour de "undefined" comme le montre l'exemple sur la page
du MDN.
1 const bestPlayer = "Alice" // Un pseudo récupéré depuis l'API
2
3 if(bestPlayer === undefined) {
4 [Link]("Il n'y a eu aucun joueur")
5 } else {
6 [Link](bestPlayer)
7}
Pour savoir si un nombre est considéré comme Not a Number, il faut utiliser la méthode
[Link]().
1 if ([Link](numberReceived)) {
2 [Link]('Mauvais nombre, à ne pas traiter')
3 } else {
4 [Link]('Nombre à traiter')
5 // Instructions pour traiter le nombre...
6}
1 // Méthode 1
2 const status = [Link](0, 3)
3
4 // Méthode 2
5 const status2 = [Link](0, 3)
6
Pour cet exemple, ces deux fonctions font la même chose. Leurs différences sont explicitées sur
leurs pages MDN respectives.
Le mot debugger est un mot-clé réservé par l'interpréteur JavaScript, il ne peut donc pas être
utilisé comme nom de variable ou fonction. On pourra corriger le code comme suit :
1 const debuggerName = myDebugger()
Exercice
Les réponses à ces questions se trouvent sur cette page du MDN ([Link])24.
Quel est le standard de JavaScript ?
B Les PEP
C ECMAScript
Exercice
18. [Link]
19. [Link]
20. [Link]
21. [Link]
22. [Link]
23. [Link]
24. [Link]
Exercice
A Number
B Error
C Array
D Integer
Exercice
Comment savoir si au moins un élément d'un tableau myArray, de type Array, remplit une
certaine condition ?
A [Link]()
B [Link]()
C [Link]()
La page ([Link])25 dédiée aux variables Array nous indique que some() permet de
vérifier automatiquement si un élément d'un tableau remplit une condition.
Exercice
Est-il possible d'utiliser des fonctions fléchées (Arrow Functions) dans la version 20 de Firefox ?
A Oui
B Non
25. [Link]
La page ([Link]) des fonctions fléchées26 indique que le support arrive à la version
22.
Exercice
JavaScript ne fait pas la différence, en termes de types, entre nombre entier et nombre flottant.
Quelle fonction permet de vérifier si une variable age de type Number représente un nombre
entier ?
A [Link](age)
B [Link]
C [Link]()
D isInteger(age)
Exercice
A change
B match
C endsWith
D replace
Exercice
db est une variable qui permet d'interagir avec une base de données. Le développeur veut stocker
les noms de familles en majuscules.
[Link]
26.
9es
A toUpper
B toUpperCase
C goBig
Exercice
A MAX_SAFE_INTEGER
B MAX_INTEGER
C MAX_SAFE
D MAX_VALUE
[Link]
1 // Empty set
2 let movies = new Set()
[Link]
1 // Empty set
2 let movies = new Set()
3
4 // Add two movies
5 [Link]('Matrix')
6 [Link]('The Artist')
[Link]
1 // Empty set
2 let movies = new Set()
3
4 // Add two movies
5 [Link]('Matrix')
6 [Link]('The Artist')
7
8 // Display the movies
9 for (let movie of movies) {
10 [Link]('-', movie)
11 }
[Link]
La fonction renvoie : « true si un élément de l'objet Set a été retiré lors de l'opération, false sinon. »
1 // Empty set
2 let movies = new Set()
3
4 // Add two movies
5 [Link]('Matrix')
6 [Link]('The Artist')
7
8 // Display the movies
9 for (let movie of movies) {
10 [Link]('-', movie)
11 }
12
13 // Delete The Artist
14 if ([Link]('The Artist')) {
15 [Link]('Suppression de The Artist effectuée.')
16 }
17 else {
18 [Link]('Suppression de The Artist impossible, le film n\'existe pas.')
19 }
1 // Empty set
2 let movies = new Set()
3
4 // Add two movies
5 [Link]('Matrix')
6 [Link]('The Artist')
7
8 // Display the movies
9 for (let movie of movies) {
10 [Link]('-', movie)
11 }
12
13 // Delete The Artist
14 if ([Link]('The Artist')) {
15 [Link]('Suppression de The Artist effectuée.')
16 }
17 else {
18 [Link]('Suppression de The Artist impossible, le film n\'existe pas.')
19 }
20
21 let choice
22 while (choice !== 0) {
23 // Movie list
24 [Link]()
25 [Link]('Liste des films :')
26 for (let movie of movies) {
27 [Link]('-', movie)
28 }
29 // Menu
30 [Link]()
31 [Link]('Menu :')
32 [Link]('1. Ajouter un film')
33 [Link]('2. Supprimer un film')
34 [Link]('0. Quitter')
35 choice = Number(prompt('Choix '))
36
37 // Add or delete
38 let movie
39 if (choice === 1 ) {
40 movie = prompt('Titre du film à ajouter ')
41 [Link](movie)
42 [Link](movie, 'ajouté.')
43 }
44 else if (choice === 2) {
45 movie = prompt('Titre du film à supprimer ')
46 if ([Link](movie)) {
47 [Link]('Suppression de', movie, 'effectuée.')
48 }
49 else {
50 [Link]('Suppression de', movie, 'impossible, le film n\'existe pas.')
51 }
52 }
53 }