Computing">
Introduction à JavaScript pour le Web
Introduction à JavaScript pour le Web
Comportement (JavaScript)
Présentation (CSS)
[Link]
Motivation
Most popular
technologies in
2024
[Link]
.co/2024/technology#most-
popular-technologies-
language-prof
7
Motivation
Best
Programming
Languages to
Learn in 2025
[Link]
[Link]/blog/nine-best-
programming-languages-
to-learn
Quelques idées fausses
8
Quelques idées fausses
9
Quelques idées fausses
[Link]
• JavaScript est le langage du Web
JavaScript serait donc la
seule technologie
applicative côté client ? • Mais avec :
• JavaScript intégré en standard aux • le développement d'AJAX (Asynchronous
navigateurs Web JavaScript and XML)
• la normalisation du langage et un meilleur
support par tous les navigateurs
• l'introduction de HTML5 (et de ses
nombreuses API JavaScript)
JavaScript
• D'autres technologies ont été est revenu
développées pour s'exécuter côté au tout 1er
client
plan
- Adobe Flash
8
- applets Java
Quelques idées fausses
[Link]
• JSON s'impose de
plus en plus comme
• Historiquement un format d'échange • Depuis 2009/2010 de plus
de données
JavaScript intégré aux en plus présent côté serveur
navigateurs
9
Quelques idées fausses
[Link]
1
Historique
ECMAScript 4 ECMAScript 6*
JScript début des travaux let, const
(MS IE 3.0) classes et modules
ECMAScript 3 ECMAScript 4 Chrome
ECMAScript 2 abandon moteur ECMAScript 7
Javascript V8 opérateur **
ECMA-262 Ed.1 [Link]
(ECMAScript 1) ECMAScript 5 ECMAScript 8
TC39 commitee mode strict async/wait
(Mai) Brendan Eich 🡪Mocha JSON
ECMAScript 9
(Sep.) Mocha 🡪LiveScript Node JS
propriétés rest/spread,
(Dec.) LiveScript 🡪JavaScript basé sur V8
iteration asynchrone
(Netscape Navigator 2.0) de Chrome
ajouts aux RegExp 1
ECMA stands for - European Computer Manufacturer's Association
Support par les différents navigateurs
[Link] 13
Environnements d'exécution JavaScript
JavaScript
Engine
Chrome: V8
Firefox: SpiderMonkey
Environnement JS
Environnement JS Safari: WebKit
14
JavaScript dans un navigateur
Et alors ? En quoi
• Code JavaScript peut être inclus dans des pages HTML JavaScript est-il si différent
d'autres langages comme
PHP, JSP, ASP ?
1
JavaScript dans le navigateur
• un script JavaScript s'exécute côté client (dans le navigateur)
GET [Link]
[Link]
• WebAssembly
- Nouveau type de code pouvant être exécuté dans les navigateurs
modernes
- Format binaire compact, rapide à charger et à exécuter
🡪 performances proches du code natif
- Conçu pour être une cible de compilation efficace pour des
langages source de bas niveau (C, C++, Rust, …)
1
WebAssembly: exemple
Google Earth :
cartographie 3D
[Link]
1
WebAssembly
Assembleur : représente le langage
machine sous une forme textuelle
lisible par un humain
<head>
<script>
• la balise <scr ipt> délimite code JavaScript statement
</script>
• peut être insérée soit dans l'entête (<head>) soit dans <script src="[Link]">
</script>
le corps (<body>) de la page HTML
</head>
• les scripts sont exécutés dans leur ordre <b…
o d y>
d'apparition dans la page code HTML
….
o Placer les scripts dans l'en tête pour qu'ils soient
chargés et exécutés avant la construction et <script>
statement
l'affichage de la page …
o Par défaut, les scripts placés dans le body sont </script>
exécutés au fur et à mesure que celui-ci est …
chargé et que le DOM est construit.=> met en code HTML
attente le moteur d'analyse HTML/CSS. ….
o Souvent les scripts sont placés à la fin du corps <script src="[Link]">
de la page (juste avant </body>) => améliorer la </script>
vitesse de chargement de la page.
2
Intégration de JavaScript dans HTML
Il existe 2 manières pour insérer un code JavaScript dans une page HTML:
25
Structures de contrôle
• Boucle itérative :
for(initialisation ; condition ; opération ) { ... instructions ... }
26
Structures de contrôle
• Boucle conditionnelle
while(condition) { ... instructions ... }
27
Concaténation des chaines de caractères
avec des expressions
• On peut utiliser l’opérateur + pour faire la • On peut utiliser les littéraux de gabarits
concaténation: (template literal)
Fonctions simples
Syntaxe:
function nom_fonction ([param1, …]){
//Corps de la fonction
}
Corps de la fonction :
Déclaration des variables,
Instructions réalisées par la fonction,
Instruction return pour renvoyer une valeur ou un objet (Facultative)
29
Déclaration de variables
30
Déclaration de variables
• Utilisation de l’instruction
[var , let , const , ] variable=valeur;
• Pas de typage (détection automatique par l’interpréteur)
• Nom de variable sensible à la casse.
• Portée :
• globale visibilité dans tout le script (var (en dehors de la fonction), ou sans
mot clé)
• fonction visibilité dans la fonction la où elle a été déclarée (var (dans la
fonction)
• bloc visibilité dans le bloc interne (let ou const)
31
Portée de variables
• var : La variable est accessible dans toute la fonction où elle est déclarée. Si elle est déclarée en
dehors d’une fonction, elle devient globale.
• let et const : La variable est limitée au bloc ({}) dans lequel elle est déclarée.
• Sans mot clé : La variable est automatiquement ajoutée à l'objet global (window dans les
navigateurs), ce qui peut causer des problèmes.
Portée fonction et portée globale
• Une variable déclarée avec le mot clé var pourra avoir deux portées: globale ou fonction.
• La portée d’une variable déclarée par var dépend de l’endroit où elle est déclarée :
• Portée globale: déclarée en dehors de la fonction.
• Portée fonction: déclarée à l’intérieur d’une fonction aura une portée limitée à cette
seule fonction.
• Une variable déclarée globale est accessible depuis l’objet global window.
Portée fonction et portée globale
• Si on n’utilise pas de mot clé dans la déclaration de variables, on crée des
variables globales.
• => Déconseiller à faire
Déclaration de variables: portée bloc
35
Déclaration de variables: portée bloc
Déclaration de variables: let vs const
• Une variable déclarée avec let est modifiable : • Une variable déclarée avec const est immuable :
Expressions de Fonction
38
Expressions de Fonction et Portée
const nom_fonction=([param1,…])=>{
//Corps de la fonction
}
• const et let permet d’empêcher la redéfinition de la fonction une deuxième
fois puisqu’ils sont de type bloc.
• Si on a une seule instruction dans une fonction, on peut ne pas utiliser le mot
clé return ni d’accolades { }.
Fonctions anonymes
function message() {
[Link]("Bonjour!");
}
• La proprièté length
[Link]
• Parcourir un tableau
// Parcourir un tableau sans connaître le nombre
d'éléments
let tableau= new Array(1, "a", 9) ;
for (let i=0; i<[Link]; i++)
[Link]("tableau[" + i + "] = "+tableau[i]); 44
Utilisation de tableaux
[Link]
L'objet String
[Link]
L'objet Math
• Propriétés :
• E : renvoie la valeur de la constante d'Euler (~2.718);
• LN2 : renvoie le logarithme népérien de 2 (~0.693);
• LN10 : renvoie le logarithme népérien de 10 (~2.302);
• LOG2E : renvoie le logarithme en base 2 de e (~1.442);
• LOG10E : renvoie le logarithme en base 10 de e (~0.434);
• PI : renvoie la valeur du nombre pi (~3.14159);
• SQRT1_2 : renvoie 1 sur racine carrée de 2 (~0.707);
• SQRT2 : renvoie la racine carrée de 2 (~1.414);
L'objet Math
• Méthodes :
• abs( ), exp( ), log(), sin( ), cos( ), tan( ), asin( ), acos( ), atan( ), max( ), min( ), sqrt( )
sont les opérations mathématiques habituelles;
• atan2( ) : retourne la valeur radian de l'angle entre l'axe des abscisses et un point;
• ceil( ) : retourne le plus petit entier supérieur à un nombre;
• floor( ) : retourne le plus grand entier inférieur à un nombre;
• pow( ) : retourne le résultat d'un nombre mis à une certaine puissance;
• random( ) : retourne un nombre aléatoire entre 0 et 1;
• round( ) : arrondi un nombre à l'entier le plus proche.
[Link]
L'objet Date
• Méthodes
• Constructeur
• getDay(), attention de 0 (dimanche) à 6 (samedi)…
• getDate() / setDate()
• getMonth() / setMonth(), attention de 0 à 11…
• getYear() / setYear() / getFullYear() / setFullYear()
• getHours()/ setHours()
• getMinutes() / setMinutes()
• getTime() / setTime() let jour = new Date();
alert([Link]()); // 2025
[Link] let anniversaire = new Date(2002, 10, 25);
avaScript/Reference/Global_Objects/Date alert([Link]());
// 25/11/2002 00:00:00
L’objet Function
• eval(chaine)
• isFinite(nombre)
• isNaN(objet)
• parseFloat(chaine)
• parseInt(chaine)
Fonctions supérieures
[Link](isFinite([Link](0))) ;
➔ false
[Link](isNaN("abcd")) ;
➔ true
[Link]("12.34"+2) ;
➔ 12.342
[Link](parseFloat("12.34")+2) ;
➔ 14.34
JavaScript
Objets propres
Déclaration et création d’objets: Objets propres
• Déclaration de méthodes
• Association de fonctions dans la création de l’objet.
} [Link] = function () {
}; }
• En JavaScript, les objets littéraux ne sont pas des constructeurs et n'ont pas de propriété
prototype directement accessible.
const Animal = {
type: "Invertébrés", // Valeur par défaut
afficherType: function () {
[Link]([Link]);
}
};
Ajouter une méthode au prototype d'un objet littéral
} };
// Créer un nouvel objet qui hérite de Animal
};
// Ajouter une nouvelle méthode à l'objet Animal let animal1 = [Link](Animal);
// Ajouter une méthode au prototype de Animal
[Link] = function () {
[Link](Animal).deplacer = function () {
[Link]("Je me déplace"); [Link]("Je me déplace");
}; };
[Link](); // Affiche "Je me déplace"
[Link](); // Affiche "Je me déplace"
Chaînage de prototype (Prototype Chain)
1. Définir une fonction constructeur « Produit » avec les attributs libelle , catégorie et
prix.
2. Ajouter la méthode description() au prototype de « Produit » pour afficher son détail.
3. Définir une fonction constructeur « Commande » qui comporte un attribut tableau de
produits.
4. Ajouter les méthodes ajouter() et afficher() au prototype de « Commande » pour
ajouter des produits au tableau et afficher l’ensemble de produits
5. Créer une instance de « Commande » et y ajouter des produits.
6. Afficher les produits d’une commande en utilisant la méthode affiche().
Solution
function Commande() {
[Link] = []; // Tableau de produits
}
[Link] = function (produit) {
[Link](produit);
[Link](`${[Link]} a été ajouté à la commande.`);
};
[Link] = function () {
[Link]("Liste des produits dans la commande :");
[Link]((produit) => [Link]());
};
Solution
• En ES6, les classes ont été introduites pour offrir une syntaxe
plus claire et plus structurée pour la création d'objets et
l'héritage.
• Elles sont en réalité une surcouche aux fonctions
« constructeur » et au prototype.
• On peut déclarer une classe avec le mot-clé class
Classes en JavaScript ES6: Constructeur
Les classes permettent de définir des méthodes directement dans leur corps :
class Etudiant {
constructor(nom, cne, filiere) {
[Link] = nom;
[Link] = cne;
[Link] = filiere;
}
affiche() {
return `L'étudiant: ${[Link]} est inscrit en ${[Link]}`;
}
}
const etd1 = new Etudiant("Ali", 123, "MIP");
[Link]([Link]()); // L'étudiant: Ali est inscrit en MIP
Classes en JavaScript ES6: Héritage
class MathUtil {
static add(a, b) {
return a + b;
}
}
[Link]([Link](5, 3)); // 8
Classes en JavaScript ES6: Encapsulation
class Produit {
constructor(libelle, categorie, prix) {
[Link] = libelle;
[Link] = categorie;
[Link] = prix;
}
description() {
[Link](
`Produit: ${[Link]},Catégorie: ${[Link]},Prix: ${
[Link]} DH`
);
}
}
Solution
class Commande {
constructor() {
[Link] = new Array();
}
ajouter(p) {
[Link](p);
}
afficher() {
[Link]("Liste des produits dans la commande :");
[Link]((produit) => [Link]());
}
}
Solution