Déclaration de variable
Il existe 3 façons de déclarer une variable:
La différence entre const
et let
:
const
ne permet pas de réécrire la variable, tel quedog = "wouf wouf"
ne marchera pas.let
permet de réécrire la variable.- Dans le cas où c’est un Object (Class, Array, Object…), il est possible de les modifier grâce aux références
Pour var
, c’est un let
sous stéroïdes (voir Scope)
Scope
Le scope d’une variable consiste à ce que cette variable ne soit définie que dans son bloc de code, sans dépasser.
Ainsi, on peut avoir le code suivant:
x
est une variable globale (var), ça signifie que, une fois définie, x
sera accessible de partout. Cela pourra poser problème, notamment si une variable avec le même nom est déclaré plus tard, c’est le concept de shadowing.
Un autre soucis (ou avantage, mais c’est rare) est que x
sera égale à undefined
avant qu’il soit déclarer (mdn var#Hoisting)
Voir mdn (var) pour plus de détails
Avertissement
Il est généralement recommandé d’éviter
var
comme la peste, sauf dans des cas biens précis où le développeur sais ce qu’il fait et le documente.
Fonctions
Il existe plusieurs façons de déclarer une fonction:
1. Fonctions anonymes
Une fonction anonyme peut se déclarer de deux façons:
En général, les fonctions fléchées sont utilisées pour des petites opérations, tel que:
Il n’est également pas nécessaire de préciser l’instruction return
Au contraire, la seconde syntaxe sera en générale utilisée quand le code est plus complexe qu’une simple expression.
Syntaxe Bonus
Il est aussi possible d’exprimer une fonction fléchée de cette manière:
Cette version est exactement la même que
function(..){..}
, c’est une préférence personnelle
2. Fonctions nommées
Il n’existe qu’une façon de déclarer une fonction nommée:
Il est aussi tout à fait possible d’utiliser une fonction anonyme et de l’assigner à une fonction.
Arguments de fonction
Il existe plusieurs façons de déclarer des arguments*
La méthode classique:
Argument optionnel:
Arguments groupés:
Pour plus de détails: mdn Paramètres des fonctions
Manipulation de string
On peut manipuler un string de cette manière:
Il suffit de placer son texte entre `...`
, il est alors possible d’appeler des fonctions, variables, Conditions ternaires etc…
Conditions
Les conditions sont très simples, elles s’expriment de cette manière:
Il est également possible de retirer les accolades si on a une seule ligne.
Opérateurs de conditions
Il y a différents opérateurs de conditions:
==
permet de tester une égalité sans vérifier le type (1 == "1"
sera vrai)===
est identique mais compare le type,1 === 1
sera faux!
est la négation, il peut être placé avant=
et==
(!=
et!==
)- On retrouve les opérateurs
>
,<
,>=
et<=
comme en Java
Attention au
=
Mettre un
=
dans une condition ne va pas provoquer d’erreurs (oui oui), par exemple: (exemple testé dans la console, tapeznode
dans le terminal pour tester vous-mêmes)
undefined
if (x = 5){ … console.log(“x 5"); ... } x 5 undefined console.log(x) 5 undefined
Heureusement, les IDE JetBrains sauront vous le faire remarquer.
Conditions ternaires
On a vu les conditions avec des gros if
, mais parfois c’est gênant. Par exemple, prenons l’exemple où on afficher “majeur” ou “mineur” selon la variable age
.
Au lieu de prendre plusieurs lignes et une variable, on peut faire ceci:
On utilise la syntaxe condition ? vrai : faux
, l’avantage est qu’elle peut être placée n’importe où: déclaration de variable, console.log, argument de fonction…, plus utile pour des petites conditions donc.
Conditions en série
Pour exprimer une condition en série, on peut utiliser l’instruction switch
:
Boucles
Les boucles similaires à Java
Types
On retrouvera:
Number
: Littéralement un nombre, entier ou décimaleString
: Une chaîne de caractères
Mais on a aussi quelques types supplémentaires
Array
Un Array
est l’équivalent d’une liste en python.
On peut déclarer un array de plusieurs façons:
Pour la seconde méthode, voir POO
Voici un exemple:
Boucles sur un Array
Il est possible d’utiliser plusieurs boucles:
On peut également opter pour des méthodes tel que .forEach(fonction)
et .map(fonction)
Déstructurer un Array
On peut déstructurer un Array de cette façon:
On obtiendrais alors:
Remarque
Cela peut marcher avec PLEINS de types (object, Map, …)
Object
Attention
A ne pas confondre avec le terme
Object
dans la POO! UnObject
en POO n’est pas l’object qu’on va voir maintenant.
Un object en javascript est similaire à un dictionnaire, genre LITTERALEMENT.
On déclare un object de cette manière:
On peut ensuite y accéder de cette manière:
L’avantage d’un object est qu’il permet de structurer les données de nombreuses manières mais surtout, il est TRES efficace.
Raison de son efficacité
Les object est ce qu’on peut appeler des
HashMap
. UnMap
est une structure de donnée clé-valeur où chaque valeur est associée à une clé. Un object va utiliser ce principe.Son efficacité vient du fait qu’il est très efficace d’associer une clé à une référence mémoire. Il n’est pas nécessaire de stocker les données dans un Array qu’il faudra parcourir. Quand on accède à une clé, on va directement recevoir son adresse mémoire, ce qu’il le rend très rapide.
La structure de donnée
Map
(voir POO) est similaire à l’exception que la clé peut être de tout type (Object, array, instance de class, …) et possède des méthodes plus “haut-niveau” (.get, .set, …) alors qu’un object est plus “primitif” et ses clés seront en général des chaines de caractères et nombres.
Méthodes utiles
Il existe plusieurs méthodes utiles à connaitre.
Il existe de nombreuses autres méthodes intéressantes détaillées sur mdn