Les Variables :
var
, let
, ou const
.var age = 25;
let name = "Alice";
const pi = 3.14159;
var
: Déclare une variable avec une portée de fonction (obsolète et à éviter).let
: Déclare une variable avec une portée de bloc.const
: Déclare une constante dont la valeur ne peut pas être modifiée.
Les Fonctions :
function greet(name) {
return `Bonjour, ${name}!`;
}
console.log(greet("Alice"));
const greetArrow = (name) => `Bonjour, ${name}!`;
console.log(greetArrow("Bob"));
function
: Utilisé pour déclarer une fonction nommée.const greetArrow = (name) => { ... }
: Syntaxe plus concise pour déclarer des fonctions avec l’opérateur fléché.
Les Conditions :
let age = 18;
if (age >= 18) {
console.log("Vous êtes majeur.");
} else {
console.log("Vous êtes mineur.");
}
if
: Vérifie si la condition est vraie.else
: Exécute le bloc de code si la condition dans if
est fausse.
Les boucles sont des structures de contrôle qui permettent de répéter un bloc de code plusieurs fois. JavaScript offre plusieurs types de boucles, les plus couramment utilisées étant for
et while
.
for
while
do...while
for...in
for...of
for
La boucle for
est souvent utilisée lorsqu’on sait à l’avance combien de fois on veut répéter un bloc de code. Elle est particulièrement utile pour itérer sur des séquences numériques ou des tableaux.
for (initialisation; condition; incrémentation) {
// Code à exécuter à chaque itération
}
for (let i = 0; i < 5; i++) {
console.log(i);
}
let i = 0
initialise la variable i
à 0.i < 5
vérifie si i
est inférieur à 5.i++
augmente la valeur de i
de 1 à chaque itération.
La boucle va afficher les valeurs de 0
à 4
dans la console.
while
La boucle while
répète un bloc de code tant qu’une condition spécifiée est vraie. Elle est utile lorsque le nombre d’itérations n’est pas connu à l’avance et dépend de la condition.
while (condition) {
// Code à exécuter tant que la condition est vraie
}
let count = 0;
while (count < 5) {
console.log(count);
count++;
}
count
est initialisée à 0
.count
est inférieur à 5
.count++
augmente la valeur de count
de 1 à chaque itération.
La boucle va afficher les valeurs de 0
à 4
dans la console.
do...while
La boucle do...while
est similaire à la boucle while
, mais la condition est évaluée après chaque itération. Cela garantit que le bloc de code est exécuté au moins une fois.
do {
// Code à exécuter
} while (condition);
let count = 0;
do {
console.log(count);
count++;
} while (count < 5);
count
est initialisé à 0
, et le bloc de code est exécuté une fois avant que la condition count < 5
soit vérifiée.
for...in
La boucle for...in
est utilisée pour itérer sur les propriétés énumérables d’un objet ou les indices d’un tableau.
Exemple avec un objet
const person = {name: "Alice", age: 25, city: "Paris"};
for (let key in person) {
console.log(key + ": " + person[key]);
}
person
contient trois propriétés : name
, age
, et city
.person
et affiche ses clés et valeurs.key
prend la valeur d’une des propriétés de l’objet.console.log(key + ": " + person[key])
: Cette ligne affiche la clé actuelle suivie de sa valeur correspondante dans l’objet person
.key
sera "name"
et person[key]
sera "Alice"
. Le message affiché sera donc "name: Alice"
.
Exemple avec un tableau
const colors = ["red", "green", "blue"];
for (let index in colors) {
console.log(index + ": " + colors[index]);
}
colors
contient trois éléments : "red"
, "green"
, et "blue"
.colors
.index
prend la valeur de l’indice d’un élément du tableau.console.log(index + ": " + colors[index])
: Cette ligne affiche l’indice actuel suivi de la valeur correspondante dans le tableau colors
.index
sera 0
et colors[index]
sera "red"
. Le message affiché sera donc "0: red"
.
for...of
La boucle for...of
est utilisée pour itérer directement sur les valeurs des objets itérables. Les objets itérables incluent les tableaux, les chaînes de caractères, les ensembles (Set
), les cartes (Map
), et d’autres structures de données similaires.
for (let variable of iterable) {
// Code à exécuter pour chaque valeur
}
Exemple avec un tableau
const colors = ["red", "green", "blue"];
for (let color of colors) {
console.log(color);
}
colors
contient trois éléments : "red"
, "green"
, et "blue"
.colors
.color
prend la valeur d’un élément du tableau.console.log(color)
: Cette ligne affiche la valeur actuelle de l’élément du tableau.color
sera "red"
. Lors de la deuxième itération, ce sera "green"
, et ainsi de suite.
Exemple avec une chaîne de caractères
const message = "hello";
for (let char of message) {
console.log(char);
}
message
contient le texte "hello"
.message
.char
prend la valeur d’un caractère de la chaîne.console.log(char)
: Cette ligne affiche le caractère actuel de la chaîne.char
sera "h"
. Lors de la deuxième itération, ce sera "e"
, et ainsi de suite.
Exemple avec un ensemble (Set
)
const uniqueNumbers = new Set([1, 2, 3, 4, 5]);
for (let number of uniqueNumbers) {
console.log(number);
}
uniqueNumbers
contient des valeurs uniques : 1
, 2
, 3
, 4
, et 5
.uniqueNumbers
.number
prend la valeur d’un élément de l’ensemble.console.log(number)
: Cette ligne affiche la valeur actuelle de l’élément de l’ensemble.
Exemple avec une carte (Map
)
const map = new Map([
['name', 'Alice'],
['age', 25],
['city', 'Paris']
]);
for (let [key, value] of map) {
console.log(key + ": " + value);
}
map
contient des paires clé-valeur : ['name', 'Alice']
, ['age', 25]
, et ['city', 'Paris']
.map
.key
et value
prennent respectivement les valeurs de la clé et de la valeur de chaque paire.console.log(key + ": " + value)
: Cette ligne affiche chaque clé suivie de sa valeur correspondante.
En JavaScript, un objet est une collection de paires clé-valeur. Les clés (ou propriétés) sont des chaînes de caractères, et les valeurs peuvent être de n’importe quel type de données : chaînes, nombres, tableaux, autres objets, fonctions, etc.
// Déclaration d'un objet
const person = {
firstName: "John",
lastName: "Doe",
age: 30,
// Méthode de l'objet
greet: function() {
return `Bonjour, je suis ${this.firstName} ${this.lastName}`;
}
};
// Accéder à une propriété
console.log(person.firstName); // Affiche: John
// Appeler une méthode de l'objet
console.log(person.greet()); // Affiche: Bonjour, je suis John Doe
const person = { ... }
: Déclare un objet nommé person
avec trois propriétés (firstName
, lastName
, age
) et une méthode (greet
).person.firstName
: Accède à la propriété firstName
de l’objet.person.greet()
: Appelle la méthode greet
de l’objet. this
fait référence à l’objet actuel (person
), donc this.firstName
accède à la propriété firstName
de l’objet.
Les propriétés des objets peuvent également être définies de manière dynamique et accédées de différentes façons.
const car = {};
car["make"] = "Toyota";
car["model"] = "Corolla";
// Accéder aux propriétés dynamiques
console.log(car["make"]); // Affiche: Toyota
console.log(car.model); // Affiche: Corolla
car["make"]
: Accède à la propriété make
en utilisant une chaîne comme clé.car.model
: Accède à la propriété model
en utilisant la notation par point.
Le DOM (Document Object Model) est une interface qui représente le document HTML comme une structure d’objets. JavaScript permet de manipuler cette structure pour modifier le contenu et la structure d’une page web en temps réel.
// Sélectionner un élément par son ID
const header = document.getElementById("header");
header.textContent = "Bienvenue!";
// Sélectionner un élément par sa classe
const items = document.getElementsByClassName("item");
for (let i = 0; i < items.length; i++) {
items[i].style.color = "blue";
}
// Sélectionner un élément avec un sélecteur CSS
const firstButton = document.querySelector("button");
firstButton.textContent = "Cliquez-moi!";
document.getElementById("header")
: Sélectionne l’élément HTML avec l’ID header
et permet de modifier son contenu avec .textContent
.document.getElementsByClassName("item")
: Sélectionne tous les éléments avec la classe item
. getElementsByClassName
retourne une collection HTML en direct. On peut parcourir cette collection avec une boucle pour appliquer des styles ou effectuer d’autres manipulations.document.querySelector("button")
: Sélectionne le premier élément correspondant au sélecteur CSS "button"
. querySelector
est plus flexible et permet l’utilisation de sélecteurs CSS plus complexes.
Les événements permettent de réagir aux actions de l’utilisateur, comme les clics ou les frappes au clavier.
// Ajouter un écouteur d'événement au clic sur un bouton
const button = document.querySelector("button");
button.addEventListener("click", () => {
alert("Button clicked!");
});
// Ajouter un écouteur d'événement au survol de la souris sur un élément
const box = document.querySelector(".box");
box.addEventListener("mouseover", () => {
box.style.backgroundColor = "yellow";
});
addEventListener("click", () => { ... })
: Ajoute un écouteur d’événement pour le clic. La fonction de rappel (callback) sera exécutée lorsque l’événement se produira.addEventListener("mouseover", () => { ... })
: Ajoute un écouteur d’événement pour le survol de la souris. Ici, la couleur de fond de l’élément sera changée en jaune lorsque la souris le survole.
On peut également créer de nouveaux éléments HTML et les ajouter à la page.
// Créer un nouvel élément <div>
const newDiv = document.createElement("div");
newDiv.textContent = "Ceci est un nouveau div.";
newDiv.className = "new-class";
// Ajouter le nouvel élément au corps du document
document.body.appendChild(newDiv);
// Créer un nouvel élément <p> et le placer dans le <div>
const newParagraph = document.createElement("p");
newParagraph.textContent = "Ceci est un paragraphe dans le nouveau div.";
newDiv.appendChild(newParagraph);
document.createElement("div")
: Crée un nouvel élément <div>
.newDiv.textContent = "Ceci est un nouveau div."
: Définit le texte du nouvel élément <div>
.document.body.appendChild(newDiv)
: Ajoute le nouvel élément <div>
à la fin du <body>
.newDiv.appendChild(newParagraph)
: Ajoute le nouvel élément <p>
à l’intérieur du <div>
nouvellement créé.
function afficherMessage() {
console.log('Message affiché après 2 secondes');
}
setTimeout(afficherMessage, 2000); // Exécute afficherMessage après 2 secondes
afficherMessage
est définie pour afficher un message dans la console.setTimeout
est une fonction intégrée qui exécute afficherMessage
après 2000 millisecondes (2 secondes).
function chargerDonnees(callback) {
let xhr = new XMLHttpRequest();
xhr.open('GET', 'https://jsonplaceholder.typicode.com/posts/1');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
callback(JSON.parse(xhr.responseText));
}
};
xhr.send();
}
function afficherDonnees(donnees) {
console.log(donnees);
}
chargerDonnees(afficherDonnees);
chargerDonnees
prend une fonction de callback comme argument.XMLHttpRequest
est utilisé pour effectuer une requête HTTP GET vers une URL.onreadystatechange
est un événement qui vérifie si la requête est terminée (readyState === 4
) et si elle a réussi (status === 200
).afficherDonnees
est une fonction qui affiche les données dans la console.chargerDonnees(afficherDonnees)
exécute la requête et passe afficherDonnees
comme callback.
let maPromesse = new Promise(function(resolve, reject) {
let condition = true;
if (condition) {
resolve('La promesse a été résolue!');
} else {
reject('La promesse a été rejetée.');
}
});
maPromesse.then(function(resultat) {
console.log(resultat);
}).catch(function(erreur) {
console.log(erreur);
});
new Promise
, qui prend une fonction avec deux arguments : resolve
et reject
.resolve
est appelé lorsque l’opération réussit.reject
est appelé lorsque l’opération échoue.then
est utilisé pour gérer le succès de la promesse.catch
est utilisé pour gérer les erreurs ou le rejet de la promesse.
fetch('https://jsonplaceholder.typicode.com/posts/1')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Erreur:', error));
fetch
est une fonction intégrée qui effectue des requêtes HTTP et retourne une promesse.then
est utilisé pour traiter la réponse de la requête.response.json()
est utilisé pour transformer la réponse en format JSON.then
est utilisé pour traiter les données JSON.catch
est utilisé pour gérer les erreurs éventuelles.
async function obtenirDonnees() {
try {
let response = await fetch('https://jsonplaceholder.typicode.com/posts/1');
let data = await response.json();
console.log(data);
}
catch (error) {
console.error('Erreur:', error);
}
}
obtenirDonnees();
async
avant une fonction la rend asynchrone et elle retourne une promesse.await
est utilisé pour attendre la résolution d’une promesse. Il peut seulement être utilisé dans une fonction asynchrone.try...catch
est utilisé pour gérer les erreurs.fetch
est utilisé pour effectuer une requête HTTP, et await
attend la réponse.response.json()
transforme la réponse en JSON, et await
attend cette opération.
Pour résumer, voici un exemple complet montrant comment utiliser les trois techniques pour effectuer une requête réseau.
// Callback
function chargerAvecCallback(callback) {
let xhr = new XMLHttpRequest();
xhr.open('GET', 'https://jsonplaceholder.typicode.com/posts/1');
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
callback(JSON.parse(xhr.responseText));
}
};
xhr.send();
}
chargerAvecCallback(function (data) {
console.log('Callback:', data);
});
// Promesse
function chargerAvecPromesse() {
return new Promise(function (resolve, reject) {
let xhr = new XMLHttpRequest();
xhr.open('GET', 'https://jsonplaceholder.typicode.com/posts/1');
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
resolve(JSON.parse(xhr.responseText));
} else if (xhr.readyState === 4) {
reject('Erreur de chargement');
}
};
xhr.send();
});
}
chargerAvecPromesse().then(function (data) {
console.log('Promesse:', data);
}).catch(function (error) {
console.error('Erreur:', error);
});
// Async/Await
async function chargerAvecAsyncAwait() {
try {
let response = await fetch('https://jsonplaceholder.typicode.com/posts/1');
let data = await response.json();
console.log('Async/Await:', data);
} catch (error) {
console.error('Erreur:', error);
}
}
chargerAvecAsyncAwait();
chargerAvecCallback
utilise XMLHttpRequest
pour charger des données et appelle une fonction de callback avec les données une fois chargées.chargerAvecPromesse
crée une promesse qui utilise XMLHttpRequest
pour charger des données et résout ou rejette la promesse en fonction du succès de la requête.chargerAvecAsyncAwait
utilise fetch
pour charger des données et await
pour attendre la réponse et la conversion en JSON.
Vous avez maintenant les bases pour commencer à utiliser JavaScript pour rendre vos pages web interactives. Pour aller plus loin, explorez des concepts plus avancés, les bibliothèques JavaScript comme jQuery, et consultez des ressources supplémentaires :