Cours de JavaScript
Cours de JavaScript
1. Introduction à JavaScript
2. Syntaxe de Base
if (true) {
console.log(name); // ✅ Fonctionne
Une variable déclarée avec let ou const est limitée au bloc {}des accolades
Opérateurs :
let sum = 5 + 3; // Arithmétique
let isEqual = (5 === 5); // Comparaison stricte
let andCondition = (true && false); // Logique
Structures de contrôle :
if (age > 18) {
console.log("Adulte");
} else {
console.log("Mineur");
}
for (let i = 0; i < 5; i++) {
console.log(i);
}
let count = 0;
while (count < 5) {
console.log(count);
count++;
}
3. Fonctions
Déclaration de fonctions :
function greet(name) {
return "Bonjour, " + name;
}
function testScope() {
let localVar = "Je suis local";
console.log(globalVar); // Accessible
}
Fonctions anonymes et IIFE :
(function() {
console.log("Je suis une IIFE");
})();
4. Manipulation des Tableaux et Objets
Tableaux :
1. Introduction au DOM
Écouteurs d'événements :
element.addEventListener("click", function() {
console.log("Clic détecté");
});
Types d'événements courants :
window.addEventListener("keydown", function(event) {
console.log("Touche pressée: " + event.key);
});
Propagation des événements :
document.addEventListener("click", function() {
console.log("Clic sur le document");
}, true); // Capturing
Délégation d'événements :
document.body.addEventListener("click", function(event) {
if (event.target.tagName === "BUTTON") {
console.log("Bouton cliqué");
}
});
element.style.color = "red";
Ajouter, supprimer et basculer des classes CSS :
element.classList.add("newClass");
element.classList.remove("oldClass");
element.classList.toggle("toggleClass");
4. Formulaires et Validation
1. Fonctions Avancées
Closures :
function createCounter() {
let count = 0;
return function() {
count++;
return count;
};
}
const counter = createCounter();
console.log(counter()); // 1
Callbacks :
function fetchData(callback) {
setTimeout(() => {
callback("Données récupérées");
}, 1000);
}
fetchData(console.log);
Fonctions récursives :
function factorial(n) {
if (n === 0) return 1;
return n * factorial(n - 1);
}
console.log(factorial(5)); // 120
2. Programmation Asynchrone
Introduction à l'asynchrone :
setTimeout(() => {
console.log("Ceci s'exécute après 2 secondes");
}, 2000);
Promesses :
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("Succès"), 1000);
});
promise.then(console.log).catch(console.error);
Async/Await :
async function fetchData() {
try {
let response = await fetch("https://api.example.com/data");
let data = await response.json();
console.log(data);
} catch (error) {
console.error("Erreur: ", error);
}
}
fetchData();
Blocs try...catch :
try {
let result = riskyOperation();
} catch (error) {
console.error("Erreur capturée: ", error);
}
Gestion des erreurs dans les promesses et async/await :
async function riskyOperation() {
try {
let data = await fetch("https://api.example.com/data");
if (!data.ok) throw new Error("Erreur réseau");
return await data.json();
} catch (error) {
console.error("Erreur: ", error);
}
}
Prototypes et héritage :
function Animal(name) {
this.name = name;
}
Animal.prototype.speak = function() {
console.log(this.name + " fait un bruit.");
};
let dog = new Animal("Chien");
dog.speak();
Méthodes statiques et d'instance :
class MathUtils {
static add(a, b) {
return a + b;
}
multiply(a, b) {
return a * b;
}
}
console.log(MathUtils.add(2, 3)); // Méthode statique
Object.create, Object.assign, Object.defineProperty :
let obj = Object.create({}, {
prop: { value: 42, writable: true }
});
Object.assign(obj, { newProp: "Hello" });
Object.defineProperty(obj, "readOnly", { value: "Je suis en lecture
seule", writable: false });
// Mauvais
function a(b, c) { return b + c; }
// Bon
function add(a, b) {
return a + b;
}
Éviter les pièges courants :
// Hoisting
console.log(x); // undefined
var x = 5;
// Comparaisons implicites
console.log("5" == 5); // true
console.log("5" === 5); // false
Utilisation de strict mode :
"use strict";
function example() {
// Code ici
}
Modularité et organisation du code :
// module.js
export function greet() {
console.log("Bonjour");
}
// main.js
import { greet } from './module.js';
greet();
function buggyFunction() {
console.log("Début");
// Code potentiellement problématique
console.log("Fin");
}