Une expression est une seule unité de code JavaScript que le moteur JavaScript peut évaluer et renvoyer une valeur.
Les expressions peuvent varier en complexité.
Nous partons des plus simples, appelées expressions primaires :
2
0,02
'quelque chose'
true
false
this //la portée actuelle
undefined
i //où i est une variable ou une constante
Les expressions arithmétiques sont des expressions qui prennent une variable et un opérateur (plus d'informations sur les opérateurs bientôt), et aboutissent à un nombre:
1/2
i++
i -= 2
i * 2
Les expressions de chaîne sont des expressions qui aboutissent à une chaîne:
'Je' + 'suis du javascript'
Enfin les expressions logique, sont des opérations sur des booléens
a && b // a et b
a || b // a ou b
!b // non b
Parlons maintenant des opérateurs. Les opérateurs vous permettent d'obtenir deux expressions simples et de les combiner pour former une expression plus complexe.
Nous pouvons classer les opérateurs en fonction des opérandes avec lesquels ils travaillent. Certains opérateurs fonctionnent avec 1 opérande. La plupart avec 2 opérandes. Un seul opérateur travaille avec 3 opérandes.
Dans cette première introduction aux opérateurs, nous présenterons les opérateurs avec lesquels vous êtes probablement familier : les opérateurs binaires.
J'en ai déjà introduit un en parlant de variables : l'opérateur d'affectation =
. Vous utilisez =
pour attribuer une valeur à une variable:
let a = 12
+
const trois = 1+2
Cet opérateur sert également à la concaténation.
Attention car javascript peut passer de l'un à l'autre!
const trois = 1+2
trois + 1 // donne 4
'trois' + 1 // donne trois1
-
const deux = 3-1
/
Effectue la division de deux number
et renvoie le résultat
const res = 30 / 5 // donne 4
const res = 20 / 7 // donne 2.857142857142857
La division par 0
ne provoque pas d'erreur en Javascript mais renvoie l'infinie
2 / 0 // donne Infinity
-2 / 0 // donne -Infinity
%
Renvoie le reste d'une division
const res = 20 / 5 // donne 0
const res = 3 / 2 // donne 1
**
Pour calculer des puissance de nombres.2**3 // donne 8 soit 2 puissance 3
Quel nom étrange? C'est en fait l'ordre dans lequel Javascript va faire les opérations.
Par exemple a = 1 * 2 + 5 / 2 % 2
donne 2.5
Pourquoi? Parce que certaines opérations ont plus de priorité que d'autres. Les règles de priorité sont répertoriées dans ce tableau:
Opérateur | Description |
---|---|
* / % |
multiplication division |
+ - |
addition soustraction |
= |
affectation |
Les opérations au même niveau (comme + et -) sont exécutées dans l'ordre où elles sont trouvées, de gauche à droite.
En suivant ces règles, l'opération ci-dessus peut être résolue de la manière suivante:
a = 1 * 2 + 5 / 2 % 2
a = 2 + 5 / 2 % 2
a = 2 + 2,5 % 2
a = 2 + 0,5
a = 2,5
Après l'affectation et les opérateurs mathématiques, le troisième ensemble d'opérateurs que je souhaite introduire est celui des opérateurs conditionnels.
Vous pouvez utiliser les opérateurs suivants pour comparer deux nombres ou deux chaînes.
Les opérateurs de comparaison renvoient toujours un booléen, une valeur vraie ou fausse).
Ce sont des opérateurs de comparaison de diségalité:
<
signifie "inférieur à"<=
signifie "inférieur ou égal à">
signifie "supérieur à">=
signifie "supérieur ou égal à"Exemple:
let a = 2
a >= 1 // true
En plus de ceux-ci, nous avons 4 opérateurs d'égalité. Ils acceptent deux valeurs et renvoient un booléen :
===
vérifie l'égalité!==
vérifie l'inégalitéNotez que nous avons également ==
et !=
en JavaScript, mais je suggère fortement de n'utiliser que ===
et !==
car ils peuvent éviter certains problèmes subtils.
Avec les opérateurs de comparaison en place, nous pouvons parler de conditions.
Une instruction if
est utilisée pour que le programme emprunte une route, ou une autre, en fonction du résultat d'une évaluation d'expression.
C'est l'exemple le plus simple, qui exécute toujours :
if (true) {
//faire quelque chose
}
au contraire, ceci n'est jamais exécuté :
if (false) {
// faire quelque chose (? jamais ?)
}
La condition vérifie l'expression que vous lui transmettez pour une valeur vraie ou fausse. Si vous transmettez un nombre, il est toujours évalué à true sauf s'il s'agit de 0. Si vous transmettez une chaîne, il est toujours évalué à true sauf s'il s'agit d'une chaîne vide. Ce sont des règles générales de conversion des types en booléen.
Avez-vous remarqué les accolades ? C'est ce qu'on appelle un bloc, et il est utilisé pour regrouper une liste de différentes déclarations.
Un bloc peut être placé partout où vous pouvez avoir une seule instruction. Et si vous avez une seule instruction à exécuter après les conditions, vous pouvez omettre le bloc et simplement écrire l'instruction:
if (true) faireQuelqueChose()
Nous pouvons ajouter une autre action si la condition est fausse en ajoutant else
.
if (true) {
// faire quelque chose
} else {
// faire autre chose
}
Et on peut aussi emboiter des conditions les unes dans les autres
if ( a === true ){
// faire quelque chose
} else if ( b === true){
// faire autre chose
} else {
// encore autre chose
}
Il existe un autre moyen de gérer les conditions. Cette fois c'est un opérateur.
Vous rencontrerez souvent cette syntax plus facile à écrire mais parfois plus difficile à lire.
condition ? exprSiVrai : exprSiFaux
Exemple:
const nombre = 4
( nombre % 2 === 0 ) ? console.log("Ce nombre est pair") : console.log("Ce nombre est impaire")
// renvoie en console Ce nombre est pair
Pour plus d'opérateurs allez regarder sur la doc de mozilla ici