====== Syntaxe générale de javascript ======
JS est proche de Python. Nous allons nous concentrer sur ce qui diffère.
===== Commentaires =====
JS utilise la notation de [[nsi:langages:c:start|C]] :
// Ceci est un commentaire sur une ligne
/*
Ceci est un commentaire
pouvant s'étaler sur
plusieurs lignes.
*/
===== Calcul élémentaire =====
let x = 8;
let y = 17;
let z = x + y;
console.log(z);
[[https://www.typescriptlang.org/play?filetype=js#code/DYUwLgBAHhC8EA4DcAoUkCecIEYDsq6EAXtjANQQaoDGA9gHYDOdoAdMHQOYAUxAlKggQgA|Voir]]
* ''let'' peut être compris comme "soit". Par exemple en ligne 1, "soit x = 8".\\ On peut aussi utiliser ''var'' pour déclarer les variables. Il y a une [[nsi:langages:js:fonctions|subtilité]] entre ''let'' et ''var''.
* Les instructions se terminent par '';''. Ce n'est pas absolument obligatoire mais c'est recommandé car en l'absence de '';'', l'interpréteur JS pourra mal comprendre.
* ''console.log'' permet d'afficher un message en console.\\ En utilisation ordinaire, JS devra plutôt afficher dans une page web mais pour l'instant nous nous contentons de la console.
* JS n'a qu'un type nombre très général, à la fois pour les entiers et pour les réels. Vous remarquez qu'on ne précise pas le type des variables et une variable peur changer de type, comme dans l'exemple ci-dessous dans lequel ''x'' est d'abord un nombre puis un texte.
let x = 8;
console.log(x);
x = "a";
console.log(x)
===== Tests =====
if (condition) {
instruction 1;
instruction 2;
}
* la condition est entre ''%%( )%%''.
* Le bloc est ouvert avec ''%%{%%'' et refermé par ''%%}%%''.
Ce dernier point est important : les retours à la ligne n'est pas obligatoire et les indentations non plus. Ces deux versions sont totalement équivalentes :
if (condition) {
instruction 1;
instruction 2;
}
if (condition) { instruction 1; instruction 2; }
Mais la première est plus lisible.
On peut ajouter un bloc ''else'' et même des blocs ''else if''.
===== Boucle TANT QUE =====
let nombre = 15;
let i = 2;
while (i < nombre) {
if (nombre % i == 0) {
console.log(i)
}
i++;
}
[[https://www.typescriptlang.org/play?ssl=8&ssc=2&pln=1&pc=1&filetype=js#code/DYUwLgBAdg9gtgIwE4ggXggRgKwG4BQokAluhAEwEDuAFsaBABSkA808yIAlBAN74RBEYgDMmsRCggBSYegwAGHvyGqIAYxhQAzjFAA6YDADmzLgKEBfC4OIBqOwUtA|voir]]
Ce programme parcours les entiers inférieurs à ''nombre'' et affiche les diviseurs trouvés.
notez que ''%'' est l'opérateur modulo comme en Python. Ainsi ''%%nombre % i == 0%%'' peut se traduire par "i divise nombre"
===== Boucle POUR =====
let total = 0;
for (let i = 0; i < 9; i++) {
total = total + i;
}
console.log(total);
[[https://www.typescriptlang.org/play?filetype=js#code/DYUwLgBGD2YIbAgXggBgNwChMDNoCcIAKUSAS2TXQgoB4IBOasgahYEoIBvTCKWBJRjxELGlgC+2AMbQAdgGdooAHTBoAcyLCE7dEA|voir]]
Le contenu de la déclaration ''for'' a trois morceaux :
* ''let i = 0'' : déclaration de la variable servant à compter les répétitions et initialisation de sa valeur à ''0''.
* ''i < 9'' : condition. La boucle POUR se répète tant que la condition est vraie.
* ''i++'' : modification du compteur. ''i++'' signifie ''i = i + 1''.
Une telle boucle POUR n'est rien d'autre qu'une boucle TANT QUE déguisée :
let total = 0;
let i = 0
while (i < 9) {
total = total + i;
i++;
}
console.log(total);
Il faut donc faire attention : si on écrit mal les paramètres de ''for'', on peut arriver à une boucle infinie. Par exemple ''for (let i = 0; i > -5; i++)''. La condition ''i > -5'' sera toujours vraie et la boucle n'aura pas de fin.
===== Boucle POUR CHAQUE =====
JS possède une boucle POUR CHAQUE semblable au ''for in'' de Python. Elle vient en deux variantes selon le type de données utilisé.
* ''for x in E'' quand ''E'' est un dictionnaire. Alors ''x'' parcours les clés.
* ''for x of E'' quand ''E'' est un tableau -- ''array''