;{}// ou /* */var, let ou const' ou doubles "[]{}function<script><script>
Le code Javascript peut être inclus dans la balise <script>
<script>
alert("Hello World");
</script>
Le code Javascript peut être inclus dans un fichier externe
<script src="script.js"></script>
script.js contient le code JavascriptLe code Javascript peut être inclus dans un événement HTML
<button onclick="alert('Hello World')">Click me</button>
Le code Javascript peut être inclus dans un lien HTML
<a href="javascript:alert('Hello World')">Click me</a>
var, let ou constvar pour déclarer des variableslet et const pour déclarer des variableslet permet de déclarer des variables dont la valeur peut être modifiéeconst permet de déclarer des variables dont la valeur ne peut pas être modifiéevar fonctionne comme let mais avec des différences (ceci n'est pas forcément clair pour le moment, c'est normal):
var peut être redéclarévar a une portée de fonction alors que let a une portée de bloclet quand vous ne pouvez pas utiliser const. N'utilisez jamais var.Javascript est un langage de programmation dynamiquement typé
let x = 5; // x est un nombre
typeof x; // number
x = "Hello"; // x est une chaîne de caractères
typeof x; // string
Javascript est un langage de programmation faiblement typé
let x = 5;
let y = "5";
x + y; // "55"
Infinity, -Infinity, NaN (Not a Number)undefinednull
null signifie l'absence de valeur. pointe vers un objet inexistant.let x;
let y = null;
typeof x; // undefined
typeof y; // object
{}let person = {
firstName: "John",
lastName: "Doe",
age: 30,
fullName: function() {
return this.firstName + " " + this.lastName;
}
};
person.fullName(); // "John Doe"
person1 et person2 identiques ?let person1 = {
firstName: "John",
lastName: "Doe",
age: 30
};
let person2 = {
firstName: "John",
lastName: "Doe",
age: 30
};
let person3 = person1;
person1 == person2; // false
person1 == person3; // true
+, -, *, /, %, ++, --=, !, <, >, < =, = >&&, ||, !if, else, else if, switchfor, while, do-while, for-in, for-of== et != pour l'égalité faible=== et !== pour l'égalité stricte5 == "5"; // true
5 === "5"; // false
5 != "5"; // false
5 !== "5"; // true
false == 0; // true
false === 0; // false
'' == 0; // true
Déclaration de fonction:
function myFunction(x, y) {
return x + y;
}
return est facultatif (si absent, la fonction retourne undefined)Appel de fonction:
myFunction(5, 3)
myFunction avec les arguments 5 et 3Fonctions anonymes:
let myFunction = function(x, y) {
return x + y;
};
myFunctionFonctions fléchées:
let myFunction = (x, y) => x + y;
Les fonctions peuvent être passées en tant que paramètres à d'autres fonctions
function myFunction(callback) {
callback();
}
myFunction(function() {
console.log("Hello");
});
myFunction prend une fonction callback en paramètreExemple de callback avec setTimeout
setTimeout(function() {
console.log("Hello");
}, 1000);
setTimeout appelle la fonction callback après 1000 millisecondesfunction sum10(x) {return x + 10;}
function multiply10(x) {return x * 10;}
function processArray(arr,operation){
for (let i=0; i<arr.length; i++) {
arr[i] = operation(arr[i]);
}
}
let arr = [1, 2, 3, 4, 5];
processArray(arr, sum10);
console.log(arr); // [11, 12, 13, 14, 15]
processArray(arr, multiply10);
console.log(arr); // [110, 120, 130, 140, 150]
Les arguments sont passés par valeurs
function myFunction(x) {
x = 10;
}
let y = 5;
myFunction(y);
console.log(y); // 5
y n'est pas modifiée par la fonction myFunctionLes objets sont passés par référence
function myFunction(obj) {
obj.name = "John";
}
let person = {name: "Doe"};
myFunction(person);
console.log(person.name); // "John"
name de l'objet person est modifiée par la fonction myFunctionLes fonctions peuvent avoir des arguments par défaut
function myFunction(x = 10) {
return x;
}
myFunction(); // 10
myFunction(5); // 5
x est 10Les fonctions peuvent avoir un nombre variable d'arguments
function myFunction(...args) {
return args;
}
myFunction(1, 2, 3); // [1, 2, 3]
... permet de passer un nombre variable d'argumentsLes fonctions peuvent être appelées avec trop ou pas assez d'arguments
undefinedfunction myFunction(x, y) {
return x + y;
}
myFunction(5); // NaN
myFunction retourne NaN car y est undefinedSi deux fonctions ont le même nom, la dernière définition écrase les précédentes, même si elles ont des paramètres différents
function myFunction(x,y) {
return 1;
}
function myFunction() {
return 2;
}
myFunction('testx','testy'); // 2
myFunction retourne 2 car la dernière définition écrase la premièreclassnewclass Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
fullName() {
return this.firstName + " " + this.lastName;
}
}
const person = new Person("John", "Doe");
const person2 = new Person("Jane", "Doe");
Object : classe de base pour tous les objetsArray : classe de base pour tous les tableauxDate : classe de base pour toutes les datesString : classe de base pour toutes les chaînes de caractèresNumber : classe de base pour tous les nombresBoolean : classe de base pour tous les booléensFunction : classe de base pour toutes les fonctions
type objet prédéfini String
let chaine = "essai";
let chaine = 'essai';
let chaine = new String("essai");
Nompre de caractères
chaine.length; // 5
+ Concatenation
chaine = chaine + " une autre chaine";
charAt(i) : retourne le caractère à l'index spécifiéindexOf(ch, i) : retourne l'index de la première occurrence d'une chaîne de caractèreslastIndexOf(ch, i) : retourne l'index de la dernière occurrence d'une chaîne de caractèressplit(ch) : divise une chaîne de caractères en un tableau de sous-chaînesmatch(exp) : recherche les sous-chaînes correspondant à l'expression régulière expreplace(exp, ch) : remplace les sous-chaînes correspondant à l'expression régulière exp par chsubstring(i, j) : extrait une sous-chaîne entre les index i et jsubstr(i, n) : extrait n caractères à partir de l'index itoLowerCase() : convertit une chaîne de caractères en minusculestoUpperCase() : convertit une chaîne de caractères en majusculesCréation
let tab = [1, 2, 3, 4, 5, 'a', 'b', 'c'];
let tab = new Array(10); // alloue un tableau de 10 éléments
let tab = new Array(); // si pas de taille, ajustement dynamique
let tab = [];
[] pour accéder aux éléments
tab[0] = 10;
tab[1] = 20;
tab[2] = 30;
length pour obtenir la taille
tab.length; // 3
push(e) : ajoute un élément à la fin du tableaupop() : dépile et retourne le dernier élément du tableaushift() : dépile et retourne le premier élément du tableauunshift(e) : ajoute un élément au début du tableauslice(i, j) : extrait une sous-liste entre les index i et j<html>
<head>
<title>Titre de page</title>
</head>
<body>
<h1>Niveau 1</h1>
<p>Un premier paragraphe</p>
</body>
</html>
Nodedocumentdocument.documentElement : retourne l'élément html du documentdocument.head : retourne l'élément head du documentdocument.body : retourne l'élément body du documentdocument.title : titre de la pagedocument.URL : URL de la pagedocument.domain : domaine de la pagedocument.lastModified : date de la dernière modification de la pagedocument.cookie : cookies de la pagedocument.referrer : URL de la page précédentedocument.getElementById(id) : retourne l'élément avec l'ID spécifiédocument.getElementsByTagName(name) : retourne une liste d'éléments avec le nom de balise spécifiédocument.getElementsByClassName(name) : retourne une liste d'éléments avec la classe spécifiéedocument.querySelector(selector) : retourne le premier élément qui correspond au sélecteur CSS spécifiédocument.querySelectorAll(selector) : retourne une liste d'éléments qui correspondent au sélecteur CSS spécifiéelement.innerHTML : définit ou retourne le contenu HTML de l'élémentelement.textContent : définit ou retourne le contenu textuel de l'élémentelement.style.property : définit ou retourne la valeur d'une propriété CSSelement.setAttribute(attribute, value) : définit ou modifie la valeur d'un attributelement.appendChild(node) : ajoute un nœud à la fin de la liste des enfants d'un nœud parentelement.removeChild(node) : supprime un nœud enfant d'un nœud parentelement.replaceChild(newNode, oldNode) : remplace un nœud enfant par un autre nœudelement.addEventListener(event, function) : ajoute un écouteur d'événements à un élémentdocument.createElement(tagName) : crée un élément HTML avec le nom de balise spécifiédocument.createTextNode(text) : crée un nœud de texte avec le texte spécifiédocument.createAttribute(name) : crée un attribut avec le nom spécifiéelement.getAttribute(attribute) : retourne la valeur de l'attribut spécifiéelement.setAttribute(attribute, value) : définit ou modifie la valeur de l'attribut spécifiéelement.removeAttribute(attribute) : supprime l'attribut spécifiéelement.hasAttribute(attribute) : retourne true si l'élément a l'attribut spécifiélet div = document.createElement("div");
let exemple = document.querySelector("#test .exemple");
exemple.innerHTML = "";
div.innerHTML = "Hello World";
div.style.color = "red";
exemple.appendChild(div);
element.addEventListener(event, function) : ajoute un écouteur d'événements à un élément
event : nom (type) de l'événementfunction : fonction à exécuter lorsque l'événement est déclenché (accepte un seul paramètre event)element.removeEventListener(event, function) : supprime un écouteur d'événements d'un élémentclick : l'utilisateur clique sur un élémentmouseover : l'utilisateur survole un élémentmouseout : l'utilisateur quitte un élémentkeydown : l'utilisateur appuie sur une touche du clavierkeyup : l'utilisateur relâche une touche du clavierload : la page est chargéeresize : la fenêtre du navigateur est redimensionnéescroll : l'utilisateur fait défiler la pagefocus : un élément obtient le focusblur : un élément perd le focussubmit : un formulaire est soumischange : la valeur d'un élément changelet btn = document.querySelector("#btn");
btn.addEventListener("click", function() {
alert("Hello World");
});
onelement.onclick
let btn2 = document.querySelector("#btn2");
btn2.onclick = function() {
alert("Hello World");
};
<button id="btn2" style="font-size:25px" onclick="alert('Hello World')">Click me</button>
console.log() : affiche un message dans la console du navigateuralert() : affiche une boîte de dialogue avec un messageprompt() : affiche une boîte de dialogue avec un champ de saisieconfirm() : affiche une boîte de dialogue avec un message et des boutons OK et AnnulersetTimeout(function, milliseconds) : appelle une fonction après un délai spécifiéclearTimeout() : annule un délai d'exécution défini avec setTimeout()map() : applique une fonction à chaque élément d'un tableau et renvoie un nouveau tableaufilter() : filtre les éléments d'un tableau en fonction d'une fonction et renvoie un nouveau tableaureduce() : réduit les éléments d'un tableau à une seule valeur en fonction d'une fonctionforEach() : exécute une fonction pour chaque élément d'un tableausort() : trie les éléments d'un tableaufind() : renvoie la première valeur d'un tableau qui satisfait une condition
map() applique une fonction à chaque élément d'un tableau et renvoie un nouveau tableau
let arr = [1, 2, 3, 4, 5];
let arr2 = arr.map(x => x * 2);
console.log(arr2); // [2, 4, 6, 8, 10]
filter() filtre les éléments d'un tableau en fonction d'une fonction et renvoie un nouveau tableau
let mots = ["bonjour", "test", "petit", "anticonstitutionnellement", "essai"];
let motsLongs = mots.filter(mot => mot.length > 5);
console.log(motsLongs); // ["bonjour", "anticonstitutionnellement"]
reduce() réduit les éléments d'un tableau à une seule valeur en fonction d'une fonction
let arr = [1, 2, 3, 4, 5];
let somme = arr.reduce((acc, val) => acc + val, 0);
console.log(somme); // 15
forEach() exécute une fonction pour chaque élément d'un tableau
let arr = [1, 2, 3, 4, 5];
arr.forEach(x => console.log(x));
map(), filter(), reduce(), forEach() peuvent être combinées pour effectuer des opérations complexes
let arr = [1, 2, 3, 4, 5];
let somme = arr.map(x => x * 2).filter(x => x > 5).reduce((acc, val) => acc + val, 0);
console.log(somme); // 24
Exemple:
On souhaite la somme des ages des chiens dans le tableau data en faisant une traduction «age de chien» -> «age humain»
data = [
{
name: 'Butters',
age: 3,
type: 'dog'
},
{
name: 'Lizzy',
age: 6,
type: 'dog'
},
{
name: 'Red',
age: 1,
type: 'cat'
},
{
name: 'Joey',
age: 3,
type: 'dog'
},
];
Solution 1:
Utilisation d'une boucle for
let somme = 0;
for (let i = 0; i < data.length; i++) {
if (data[i].type === 'dog') {
somme += data[i].age * 7;
}
}
console.log(somme); // 84
let ages = data
.filter((animal) => {
return animal.type === 'dog';
}).map((animal) => {
return animal.age * 7;
}).reduce((sum, animal) => {
return sum + animal.age;
});
let isDog = (animal) => {
return animal.type === 'dog';
}
let ageHumain = (animal) => {
return animal.age * 7;
}
let sum = (sum, animal) => {
return sum + animal;
}
let ages = data
.filter(isDog)
.map(ageHumain)
.reduce(sum);
console.log(ages); // 84