Langage pour le web (et +), interprété, orienté objet,
dynamique, typage faible,
riche en API
Standard et écosystème en évolution
JavaScript != Java
1995 - Créer par Brenden Eich chez Netscape/Mozilla
1997 - Standardiser comme ECMAScript (ES1)
2015 - Version majeur ES6 (ES2015)
Depuis 2015, une nouvelle version chaque année
ES6
OLD
Vue
Apparu avec ECMAScript 6
Usage déprécié
Fréquent dans l'usage de Vue.js
// index.html
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Apprenons JS</title>
<script src="script.js"></script>
</head>
<body>
</body>
</html>
// script.js
window.addEventListener("load", () => {
let body = document.body;
body.textContent = "Hello world";
});
OLD
// Commentaire monoligne
/*
Commentaire
multi
ligne
*/
let maVariable;
let maVariable;
maVariable; // undefined
let maVariable;
maVariable = "Hello world";
let maVariable;
maVariable = "Hello world";
maVariable // "Hello world"
let maVariable = "Hello world";
let maVariable = "Hello world";
let maVariable = "Bonjour le monde";
// Uncaught SyntaxError: redeclaration of let maVariable
Un nom de variable correct peut contenir :
- lettres minuscules (a-z)
- lettres majuscules (A-Z)
- chiffres (0-9)
- caractères dollar ($)
- caractères underscore (_)
Un nom de variable ne commence jamais par un chiffre.
good
GOOD
$Good
_good_
gôöd
b-a-d
-Bad-
84D
if(true) {
let x = 42;
x; // 42
}
x; // undefined
if(true) {
let x = 42;
x; // 42
}
x; // undefined
ES6
OLD
if(true) {
var x = 42;
x; // 42
}
x; // 42
if(true) {
let x = 42;
x; // 42
}
x; // undefined
ES6
OLD
function f() {
if(true) {
var x = 42;
x; // 42
}
x; // 42
}
x; // undefined
let x = 42; // 42
x = 1337;
// 1337
ES6
const x = 42; // 42
x = 1337;
// Uncaught TypeError: invalid assignment to const 'x'
ES6
Types objets (Object) |
---|
Object |
Array |
Set |
Map |
RegExp |
Function |
... |
Types primitifs |
---|
string |
number |
boolean |
null |
undefined |
symbol |
BigInt |
ES6
ES11
"hello"
1337
true
null
undefined
Symbol(42)
BigInt('1337')
[42, "Hello", true]
{ foo: "bar" }
function f() {}
let x = 1337;
x; // 1337
typeof x; // "number"
let x = 1337;
x; // 1337
typeof x; // "number"
x = new Date();
typeof x; // "object"
x = new Date();
typeof x; // "object"
x instanceof Date; // true
x instanceof RegExp; // false
let x = (2 + 13 - 7) * 2 / 4 % 5; // 4
let x = 2; // 2
x += 13; // 15
x -= 7; // 8
x *= 2; // 16
x /= 4; // 4
x %= 5; // 4
let x = 9;
x++; // 9;
x; // 10
let x = 9;
++x; // 10;
x; // 10
let x = 9;
x--; // 9;
x; // 8
let x = 9;
--x; // 8;
x; // 8
let x = true && false; // false
let y = true || false; // true
let z = true || false && false; // true
// = true || (false && false)
let notZ = !z; // false
23 == 23; // true
23 == "23"; // true
0 == "0"; // true;
0 == false; // true;
0 == ""; // true;
23 === 23; // true
23 === "23"; // false
0 === "0"; // false;
0 === false; // false;
0 === ""; // false;
OLD
23 != 23; // false
23 != "23"; // false
0 != "0"; // false;
0 != false; // false;
0 != ""; // false;
23 !== 23; // false
23 !== "23"; // true
0 !== "0"; // true;
0 !== false; // true;
0 !== ""; // true;
OLD
let x = 42;
x < 32; // false
x <= 42; // true
x > 6; // true
17 >= x; // false
const couleur = "rose";
if(couleur === "rouge") {
peindre();
}
const couleur = "rose";
if(couleur === "rouge") {
peindre();
}
else {
console.log("Couleur indisponible");
}
const couleur = "rose";
if(couleur === "rouge") {
peindre();
}
else if(couleur === "rose") {
console.log("Rouge, rose, sur un malentendu vous savez...");
}
else {
console.log("Couleur indisponible");
}
let number = 10
if (number > 0) {
console.log("Positive")
} else if (number < 0) {
console.log("Negative")
} else if (number === 42) {
console.log("Life answer")
} else {
console.log("Zero")
}
const couleur = "rose";
switch(couleur) {
case "rouge":
peindre();
break;
default:
console.log("Couleur indisponible");
}
const couleur = "rose";
switch(couleur) {
case "rouge":
peindre();
break;
case "rose":
console.log("Rouge, rose, sur un malentendu vous savez...");
break;
default:
console.log("Couleur indisponible");
}
let i = 0;
while(i < 5) {
coupDePinceaux();
i++;
}
for(let i = 0; i < 5; i++) {
coupDePinceaux();
}
https://interactly.glitch.me/
Benjamin Chazelle
iut@chazelle.pro