
Introduction au JavaScript
Usage du JavaScript aujourdâhui : jQuery, Angular, Vue.js, React, NodeJS, NPM.
Rien Ă voir avec javaâŠ
Langage interprété par les navigateurs (cà d lu et exécuté à chaque fois), trÚs utilisé avec les technologies HTML/CSS.
Langage âfull stackâ avec lâapparition de NodeJS (JavaScript cĂŽtĂ© serveur) â> rĂ©volution Ă lâĂ©poque.
De nombreuses librairies et frameworks existent pour faire évoluer et améliorer JavaScript.
BP : faire attention aux dĂ©pendances dans les librairies que lâon utilise. Dans la vraie vie, on se laisse souvent dĂ©passer !
TypeScript = sur-ensemble syntaxique stricte du JavaScript, libre et open source, qui permet dâavoir un typage des variables et une syntaxe moins âbarbareâ.
Le code est transpilĂ© ou trans-compilĂ© : il est dâabord compilĂ© en JavaScript avant dâĂȘtre interprĂ©tĂ© par lâordinateur.
Letâs get started
Mise en place
- Choisir son IDE
- Télécharger NodeJS
Bases du langage
JavaScript respecte les paradigmes de la programmation orientée-objet, de la programmation impérative (exécution des lignes de code les unes aprÚs les autres), de la programmation fonctionnelle (appel de fonctions).
; nâest pas obligatoire (mais il est possible de le mettre pour garder de bonnes habitudes) â> penser Ă ĂȘtre cohĂ©rent,
- lâopĂ©rateur + fera dynamiquement soit lâaddition de nombres soit la concatĂ©nation de chaĂźnes de caractĂšres.
Typage dynamique des variables : il nâest pas nĂ©cessaire de donner un type Ă la variable que lâon dĂ©clare (var maVariable), câest lâinterprĂ©teur qui gĂšre.
- types primitifs :
boolean,null,undefined,numberetstring
- types objets :
Date,Math,Array,Object,Function,NaN,âŠ
Les objets donnent accÚs à des méthodes et des propriétés.
Déclarer une constante : const MA_CONSTANTE.
PortĂ©e dâune variable : let vs var.
BP : il est recommandĂ© dâutiliser let qui permet de limiter les erreurs (on garde var pour quand on sait ce quâon fait et quâon a besoin dâune variable globale).
Commentaires : sur une ligne //, sur plusieurs lignes /* ... */.
Fonctions : déclaration avec function, un nom adéquat, zéro ou plusieurs paramÚtres, le corps de la fonction entre {} qui peut potentiellement retourner une valeur (return).
function sonpetitnom (param) { corps [return] };
console.log() permet dâafficher en console â> utile uniquement pour dĂ©boguer ou afficher avec NodeJS.
BP : supprimer les console.log() avant mise en production.
OpĂ©rateurs de base : similaires Ă Java, avec en plus lâĂ©galitĂ© stricte === || !== qui permet de comparer Ă la fois la valeur et le type des variables.
BP : La stratĂ©gie en JavaScript est de comparer avec cet opĂ©rateur stricte, ce qui permet dâĂ©viter des petites erreurs pouvant se glisser dans le code.
//--- Quelques exemples de variables
var uneVariable; // variable globale non definie
console.log(uneVariable); //undefined
let unBooleen = true; // variable dont le type est dynamiquement defini (boolean)
let aujourdhui = Date();
console.log("La date d'aujourd'hui est " + aujourdhui);
//La date d'aujourd'hui est Thu Jan 19 2023 10:09:39 GMT+0100 (heure normale dâEurope centrale)
let unNombreAleatoire = Math.floor(Math.random()*10);
// nombre aleatoire entre 0 et 10, arrondi a l'entier
console.log(unNombreAleatoire);
let unNombre = 5;
let autreNombre = 7;
let somme = add(unNombre, autreNombre); // appel de la fonction add()
console.log(somme); //12
// declaration de la fonction add()
function add(a,b) {
return a+b;
}
Structures de code
TrĂšs similaires Ă Java.
Les conditionnelles :
- ifâŠelse
- switch
Les boucles :
- while
- doâŠwhile
- for
- forâŠin et forâŠof â> utilisĂ©s pour les objets et les tables
La gestion dâerreurs : tryâŠcatch
//--- Quelques exemples de structures de code
// if et egalite stricte
let leNombre = 10;
let laString = '10';
if (leNombre === laString) {
console.log("Les deux variables sont égales en valeur et en type.")
} else if (leNombre == laString) {
console.log("Les deux variables sont égales en valeur mais pas en type.")
//c'est cette solution qui sera affichee en console
} else {
console.log("Les deux variables ne sont pas égales.")
}
// switch
let gateau = 'tarte au citron meringuée';
switch (gateau) {
case 'tarte au citron meringuée':
console.log('Mangeons une tarte au citron meringuée !');
//c'est cette solution qui sera affichee en console
break;
case 'brownie':
console.log('Mangeons un brownie !');
break;
default:
console.log('Ce gateau n\'est pas au menu...');
}
// while
let i=0;
while (i<4) {
i++;
console.log(i);
}
// do...while
let alea = 0;
do {
console.log(alea + " est différent de 2.");
alea = Math.floor(Math.random()*10);; // relance
} while (alea !== 2);
console.log("Enfin ! " + alea + " est strictement égal à 2.");
// for
for (let i=0; i<6; i++) {
console.log("tour " + (i+1) + "/6");
}
// try...catch
try {
console.log(compteur);
} catch (error) {
console.log("Une erreur est survenue !");
console.error(error.message); //compteur is not defined
}
Principaux objets disponibles
TrĂšs similaires Ă Java.
Notation avec les crochets [] (ou new Array() qui est non-recommandé).
Taille non fixée.
PropriĂ©tĂ©s et mĂ©thodes disponibles : length, push(), pop(), slice(), sort(), toString()âŠ
//--- Quelques exemples de tableaux
let tabVide = [];
let tabFleurs = ['marguerite', 'rose', 'tulipe'];
// non-recommande ~ let unTab = new Array(TAILLE_FIXE);
console.log(tabFleurs); //[ 'marguerite', 'rose', 'tulipe' ]
console.log("premier element : " + tabFleurs[0]); //premier element : marguerite
console.log("taille : " + tabFleurs.length); //taille : 3
//enlever le dernier
tabFleurs.pop();
console.log(tabFleurs); //[ 'marguerite', 'rose']
// ajouter un element
tabFleurs.push("jasmin");
console.log(tabFleurs); //[ 'marguerite', 'rose', 'jasmin' ]
// decouper : index a partir duquel je cree un nouveau tableau
let tabDecoupe=tabFleurs.slice(1);
console.log("tableau découpé : " + tabDecoupe); //tableau découpé : rose,jasmin
// episser : ajouter et/ou supprimer des elements
// trois param : index, nombre d'elements a supprimer, elements a ajouter
tabFleurs.splice(1,1, 'lavande', 'lilas', 'tournesol');
console.log(tabFleurs); //[ 'marguerite', 'lavande', 'lilas', 'tournesol', 'jasmin' ]
// tri tab par ordre alphabetique
// - possible de lui mettre d'autres methodes pour un tri perso
tabFleurs.sort();
console.log(tabFleurs); //[ 'jasmin', 'lavande', 'lilas', 'marguerite', 'tournesol' ]
// pour reinitialiser le tableau
tabFleurs = [];