You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/05-types/article.md
+40Lines changed: 40 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -47,13 +47,25 @@ Outre les nombres réguliers, il existe des "valeurs numériques spéciales" qui
47
47
alert( "pas un nombre" / 2 ); // NaN, une telle division est erronée
48
48
```
49
49
50
+
<<<<<<<HEAD
50
51
`NaN` est contagieux. Toute autre opération sur `NaN` donnerait un `NaN`:
51
52
52
53
```js run
53
54
alert( "pas un nombre" / 2 + 5 ); // NaN
54
55
```
55
56
56
57
Donc, s'il y a `NaN` quelque part dans une expression mathématique, elle se propage à l'ensemble du résultat.
58
+
=======
59
+
`NaN` is sticky. Any further mathematical operation on `NaN` returns `NaN`:
60
+
61
+
```js run
62
+
alert( NaN + 1 ); // NaN
63
+
alert( 3 * NaN ); // NaN
64
+
alert( "not a number" / 2 - 1 ); // NaN
65
+
```
66
+
67
+
So, if there's a `NaN` somewhere in a mathematical expression, it propagates to the whole result (there's only one exception to that:`NaN ** 0` is `1`).
68
+
>>>>>>>71da17e5960f1c76aad0d04d21f10bc65318d3f6
57
69
58
70
```smart header="Les opérations mathématiques sont sûres"
59
71
Faire des maths est sans danger en JavaScript. Nous pouvons faire n'importe quoi : diviser par zéro, traiter les chaînes non numériques comme des nombres, etc.
@@ -213,6 +225,7 @@ Le type `symbol` est utilisé pour créer des identificateurs uniques pour les o
213
225
214
226
L'opérateur `typeof` renvoie le type de l'argument. Il est utile lorsqu'on souhaite traiter différemment les valeurs de différents types ou de faire une vérification rapide.
215
227
228
+
<<<<<<< HEAD
216
229
Il supporte deux formes de syntaxe :
217
230
218
231
1. Sous forme d'opérateur : `typeof x`.
@@ -221,6 +234,9 @@ Il supporte deux formes de syntaxe :
221
234
En d'autres termes, cela fonctionne à la fois avec ou sans parenthèses. Le résultat est le même.
222
235
223
236
L'appel `typeof x` renvoie une chaîne de caractères avec le nom du type :
237
+
=======
238
+
A call to `typeof x` returns a string with the type name:
239
+
>>>>>>> 71da17e5960f1c76aad0d04d21f10bc65318d3f6
224
240
225
241
```js
226
242
typeofundefined// "undefined"
@@ -254,8 +270,26 @@ Les trois dernières lignes peuvent nécessiter des explications supplémentaire
254
270
2. Le résultat de `typeofnull` est `"object"`. C'est une erreur officiellement reconnue dans `typeof`, conservée pour compatibilité. Bien sûr, `null` n'est pas un objet. C'est une valeur spéciale avec un type distinct qui lui est propre.
255
271
3. Le résultat de `typeof alert` est `"function"`, car `alert` est une fonction. Nous étudierons les fonctions dans les chapitres suivants, et nous verrons qu’il n’y a pas de type "fonction" en JavaScript. Les fonctions appartiennent au type `object`. Mais `typeof` les traite différemment, en retournant `"fonction"`. Cela vient également des débuts de JavaScript. Techniquement ce n’est pas tout à fait correct, mais très pratique à l'usage.
256
272
273
+
<<<<<<< HEAD
257
274
258
275
## Résumé
276
+
=======
277
+
1. `Math` is a built-in object that provides mathematical operations. We will learn it in the chapter <info:number>. Here, it serves just as an example of an object.
278
+
2. The result of `typeofnull` is `"object"`. That's an officially recognized error in `typeof`, coming from very early days of JavaScript and kept for compatibility. Definitely, `null` is not an object. It is a special value with a separate type of its own. The behavior of `typeof` is wrong here.
279
+
3. The result of `typeof alert` is `"function"`, because `alert` is a function. We'll study functions in the next chapters where we'll also see that there's no special "function" type in JavaScript. Functions belong to the object type. But `typeof` treats them differently, returning `"function"`. That also comes from the early days of JavaScript. Technically, such behavior isn't correct, but can be convenient in practice.
280
+
281
+
```smart header="The `typeof(x)` syntax"
282
+
You may also come across another syntax:`typeof(x)`. It's the same as `typeof x`.
283
+
284
+
To put it clear: `typeof` is an operator, not a function. The parentheses here aren't a part of`typeof`. It's the kind of parentheses used for mathematical grouping.
285
+
286
+
Usually, such parentheses contain a mathematical expression, such as `(2 + 2)`, but here they contain only one argument `(x)`. Syntactically, they allow to avoid a space between the `typeof` operator and its argument, and some people like it.
287
+
288
+
Some people prefer `typeof(x)`, although the `typeof x` syntax is much more common.
289
+
```
290
+
291
+
## Summary
292
+
>>>>>>> 71da17e5960f1c76aad0d04d21f10bc65318d3f6
259
293
260
294
Il existe 8 types de données de base en JavaScript.
261
295
@@ -270,8 +304,14 @@ Il existe 8 types de données de base en JavaScript.
270
304
271
305
L'opérateur `typeof` nous permet de voir quel type est stocké dans la variable.
272
306
307
+
<<<<<<< HEAD
273
308
- Deux formes : `typeof x` ou `typeof(x)`.
274
309
- Renvoie une chaîne de caractères avec le nom du type, comme `"string"`.
275
310
- Pour `null` il renvoit `"object"` -- C’est une erreur dans le langage, ce n’est pas un objet en fait.
311
+
=======
312
+
- Usually used as `typeof x`, but `typeof(x)` is also possible.
313
+
- Returns a string with the name of the type, like `"string"`.
314
+
- For `null` returns `"object"` -- this is an error in the language, it's not actually an object.
315
+
>>>>>>>71da17e5960f1c76aad0d04d21f10bc65318d3f6
276
316
277
317
Dans les chapitres suivants, nous nous concentrerons sur les valeurs primitives et une fois que nous les connaîtrons, nous passerons aux objets.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/08-operators/article.md
+22Lines changed: 22 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -191,6 +191,7 @@ Il y a beaucoup d'opérateurs en JavaScript. Chaque opérateur a un numéro corr
191
191
192
192
Un extrait du [tableau de précédence](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) (vous n'avez pas besoin de vous en souvenir, mais notez que les opérateurs unaires ont une prioritée plus élevée que les binaires correspondants) :
193
193
194
+
<<<<<<< HEAD
194
195
| Précédence | Nom | Symbole |
195
196
|------------|-----------------|---------|
196
197
| ... | ... | ... |
@@ -206,10 +207,31 @@ Un extrait du [tableau de précédence](https://developer.mozilla.org/en-US/docs
206
207
| ... | ... | ... |
207
208
208
209
Comme on peut le voir, le "plus unaire" a une priorité de `17`, ce qui est supérieur à `13` pour "l'addition" (plus binaire). C’est pourquoi, dans l’expression `"+apples + +oranges"`, les plus unaires fonctionnent en premier, puis l’addition.
210
+
=======
211
+
| Precedence | Name | Sign |
212
+
|------------|------|------|
213
+
| ... | ... | ... |
214
+
| 15 | unary plus |`+`|
215
+
| 15 | unary negation |`-`|
216
+
| 14 | exponentiation |`**`|
217
+
| 13 | multiplication |`*`|
218
+
| 13 | division |`/`|
219
+
| 12 | addition |`+`|
220
+
| 12 | subtraction |`-`|
221
+
| ... | ... | ... |
222
+
| 2 | assignment |`=`|
223
+
| ... | ... | ... |
224
+
225
+
As we can see, the "unary plus" has a priority of `15` which is higher than the `13` of "addition" (binary plus). That's why, in the expression `"+apples + +oranges"`, unary pluses work before the addition.
226
+
>>>>>>> 71da17e5960f1c76aad0d04d21f10bc65318d3f6
209
227
210
228
## Affectation
211
229
230
+
<<<<<<< HEAD
212
231
Notons qu’une affectation `=` est aussi un opérateur. Il est répertorié dans le tableau de priorité des précédences avec la très faible priorité de `3`.
232
+
=======
233
+
Let's note that an assignment `=` is also an operator. It is listed in the precedence table with the very low priority of `2`.
234
+
>>>>>>> 71da17e5960f1c76aad0d04d21f10bc65318d3f6
213
235
214
236
C’est pourquoi lorsque nous assignons une variable, comme `x = 2 * 2 + 1`, les calculs sont effectués en premier, puis le `=` est évalué, stockant le résultat dans `x`.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/12-nullish-coalescing-operator/article.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -107,7 +107,11 @@ En pratique, la hauteur zéro est souvent une valeur valide, qui ne doit pas êt
107
107
108
108
## Priorité
109
109
110
+
<<<<<<< HEAD
110
111
La priorité de l'opérateur `??` est à peu près la même que celle de `||`, juste un peu plus basse. Il est égal à `5` dans le [tableau MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table), tandis que `||` est `6`.
112
+
=======
113
+
The precedence of the `??` operator is the same as `||`. They both equal `4` in the [MDN table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table).
114
+
>>>>>>> 71da17e5960f1c76aad0d04d21f10bc65318d3f6
111
115
112
116
Cela signifie que, tout comme `||`, l'opérateur de coalescence des nuls `??` est évalué avant `=` et `?`, Mais après la plupart des autres opérations, telles que `+`, `*`.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/16-function-expressions/article.md
+33-1Lines changed: 33 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,16 +12,38 @@ function sayHi() {
12
12
13
13
Il existe une autre syntaxe pour créer une fonction appelée *Expression de Fonction*.
14
14
15
+
<<<<<<< HEAD
15
16
Cela ressemble à ceci :
17
+
=======
18
+
It allows us to create a new function in the middle of any expression.
19
+
20
+
For example:
21
+
>>>>>>> 71da17e5960f1c76aad0d04d21f10bc65318d3f6
16
22
17
23
```js
18
24
letsayHi=function() {
19
25
alert( "Hello" );
20
26
};
21
27
```
22
28
29
+
<<<<<<< HEAD
23
30
Ici, la fonction est créée et attribuée explicitement à la variable, comme toute autre valeur. Quelle que soit la définition de la fonction, il ne s’agit que d’une valeur stockée dans la variable `sayHi`.
24
31
32
+
=======
33
+
Here we can see a variable `sayHi` getting a value, the new function, created as `function() { alert("Hello"); }`.
34
+
35
+
As the function creation happens in the context of the assignment expression (to the right side of `=`), this is a *Function Expression*.
36
+
37
+
Please note, there's no name after the `function` keyword. Omitting a name is allowed for Function Expressions.
38
+
39
+
Here we immediately assign it to the variable, so the meaning of these code samples is the same: "create a function and put it into the variable `sayHi`".
40
+
41
+
In more advanced situations, that we'll come across later, a function may be created and immediately called or scheduled for a later execution, not stored anywhere, thus remaining anonymous.
42
+
43
+
## Function is a value
44
+
45
+
Let's reiterate: no matter how the function is created, a function is a value. Both examples above store a function in the `sayHi` variable.
46
+
>>>>>>> 71da17e5960f1c76aad0d04d21f10bc65318d3f6
25
47
26
48
La signification de ces exemples de code est la même : "créer une fonction et la placer dans la variable `sayHi`".
27
49
@@ -64,10 +86,14 @@ Voici ce qui se passe ci-dessus en détail :
64
86
2. La ligne `(2)` le copie dans la variable `func`. Veuillez noter à nouveau : il n'y a pas de parenthèses après `sayHi`. S'il y en avait, alors `func = sayHi()` écrirait *le résultat de l'appel*`sayHi()` dans `func`, et non *la fonction*`sayHi` elle-même.
65
87
3. Maintenant, la fonction peut être appelée à la fois en tant que `sayHi()` et `func()`.
66
88
89
+
<<<<<<< HEAD
67
90
Notez que nous aurions aussi pu utiliser une Expression de Fonction pour déclarer `sayHi`, à la première ligne :
91
+
=======
92
+
We could also have used a Function Expression to declare `sayHi`, in the first line:
93
+
>>>>>>> 71da17e5960f1c76aad0d04d21f10bc65318d3f6
68
94
69
95
```js
70
-
letsayHi=function() {
96
+
letsayHi=function() {// (1) create
71
97
alert( "Hello" );
72
98
};
73
99
@@ -92,9 +118,15 @@ let sayHi = function() {
92
118
}*!*;*/!*
93
119
```
94
120
121
+
<<<<<<< HEAD
95
122
La réponse est simple :
96
123
- Il n’ya pas besoin de `;` à la fin des blocs de code et des structures de syntaxe qui les utilisent comme `if { ... }`, `for { }`, `function f { }` etc.
97
124
- Une Fonction Expression est utilisée dans la déclaration : `let sayHi = …;`, en tant que valeur. Ce n’est pas un bloc de code, mais plutôt une affectation. Le point-virgule `;` est recommandé à la fin des déclarations, quelle que soit la valeur. Donc, le point-virgule ici n'est en aucun cas lié à la Fonction Expression elle même, il termine simplement l'instruction.
125
+
=======
126
+
The answer is simple: a Function Expression is created here as `function(…) {…}` inside the assignment statement: `let sayHi = …;`. The semicolon `;` is recommended at the end of the statement, it's not a part of the function syntax.
127
+
128
+
The semicolon would be there for a simpler assignment, such as `let sayHi = 5;`, and it's also there for a function assignment.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/17-arrow-functions-basics/article.md
+13-1Lines changed: 13 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,10 +5,14 @@ Il existe une syntaxe plus simple et concise pour créer des fonctions, c'est so
5
5
Les "fonctions fléchées" sont appelées ainsi pour leur syntaxe :
6
6
7
7
```js
8
-
letfunc= (arg1, arg2, ..., argN) => expression
8
+
letfunc= (arg1, arg2, ..., argN) => expression;
9
9
```
10
10
11
+
<<<<<<< HEAD
11
12
...Cela va créér une function `func` qui accepte les arguments `arg1...argN`, puis évalue l'`expression` sur le côté droit et retourne le résultat.
13
+
=======
14
+
This creates a function `func` that accepts arguments `arg1..argN`, then evaluates the `expression` on the right side with their use and returns its result.
15
+
>>>>>>> 71da17e5960f1c76aad0d04d21f10bc65318d3f6
12
16
13
17
C'est donc la version raccourcie de :
14
18
@@ -33,7 +37,11 @@ let sum = function(a, b) {
33
37
alert( sum(1, 2) ); // 3
34
38
```
35
39
40
+
<<<<<<< HEAD
36
41
Comme vous pouvez le voir `(a, b) => a + b` représente une fonction qui accepte 2 arguments nommés `a` et `b`. Lors de l'éxécution, elle évalue l'expression `a + b` et retourne le résultat.
42
+
=======
43
+
As you can see, `(a, b) => a + b` means a function that accepts two arguments named `a` and `b`. Upon the execution, it evaluates the expression `a + b` and returns the result.
44
+
>>>>>>> 71da17e5960f1c76aad0d04d21f10bc65318d3f6
37
45
38
46
- Pour un argument unique, alors les parenthèses autour du paramètre peuvent être omises, rendant la fonction encore plus courte.
39
47
@@ -86,7 +94,11 @@ Comme cela :
86
94
let sum = (a, b) => { // Les accolades ouvre une fonction multiligne
87
95
let result = a + b;
88
96
*!*
97
+
<<<<<<< HEAD
89
98
return result; // Si nous utilisons des accolades le "return" est nécessaire
99
+
=======
100
+
return result; // if we use curly braces, then we need an explicit "return"
Copy file name to clipboardExpand all lines: 1-js/04-object-basics/06-constructor-new/article.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,10 @@
1
1
# Le constructeur, l'opérateur "new"
2
2
3
+
<<<<<<< HEAD
3
4
La syntaxe normale `{...}` permet de créer un seul objet. Mais souvent, nous devons créer de nombreux objets similaires, tels que plusieurs utilisateurs ou éléments de menu, etc.
5
+
=======
6
+
The regular `{...}` syntax allows us to create one object. But often we need to create many similar objects, like multiple users or menu items and so on.
7
+
>>>>>>> 71da17e5960f1c76aad0d04d21f10bc65318d3f6
4
8
5
9
Cela peut être fait en utilisant les fonctions du constructeur et l'opérateur `"new"`.
0 commit comments