Skip to content

Commit bd4ab42

Browse files
authored
Merge pull request #24 from tiffanymatthe/master
The old "var"
2 parents b98478f + ce46aaa commit bd4ab42

File tree

1 file changed

+48
-48
lines changed

1 file changed

+48
-48
lines changed
Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,100 @@
11

2-
# The old "var"
2+
# L'ancien "var"
33

4-
In the very first chapter about [variables](info:variables), we mentioned three ways of variable declaration:
4+
Dans le tout premier chapitre qui parle des [variables](info:variables), nous avons mentionné trois façons pour déclarer une variable:
55

66
1. `let`
77
2. `const`
88
3. `var`
99

10-
`let` and `const` behave exactly the same way in terms of Lexical Environments.
10+
`let` et `const` agissent exactement de la même façon en ce qui concerne les environnements lexicaux (Lexical Environments).
1111

12-
But `var` is a very different beast, that originates from very old times. It's generally not used in modern scripts, but still lurks in the old ones.
12+
Cependant, `var` est une bête d'une autre nature qui provient des temps très anciens. Ce n'est pas généralement utilisé dans les scripts modernes, mais elle peut se retrouver encore dans les anciens scripts.
1313

14-
If you don't plan on meeting such scripts you may even skip this chapter or postpone it, but then there's a chance that it bites you later.
14+
Si vous ne planifiez pas rencontrer ces types de scripts, vous pouvez même sauter ce chapitre ou le remettre à plus tard, mais il y a une chance que cela peut vous causer des ennuis dans le futur.
1515

16-
From the first sight, `var` behaves similar to `let`. That is, declares a variable:
16+
Au premier regard, `var` agit de manière similaire à `let`. C'est à dire, elle déclare une variable:
1717

1818
```js run
1919
function sayHi() {
20-
var phrase = "Hello"; // local variable, "var" instead of "let"
20+
var phrase = "Hello"; // variable locale, "var" au lieu de "let"
2121

2222
alert(phrase); // Hello
2323
}
2424

2525
sayHi();
2626

27-
alert(phrase); // Error, phrase is not defined
27+
alert(phrase); // Erreur, phrase n'est pas définie
2828
```
2929

30-
...But here are the differences.
30+
...mais voici les différences.
3131

32-
## "var" has no block scope
32+
## "var" n'a pas de portée limitée aux blocs
3333

34-
`var` variables are either function-wide or global, they are visible through blocks.
34+
Les variables `var` sont globales ou à l'échelle de la fonction. En d'autres mots, elles sont visibles à travers les blocs.
3535

36-
For instance:
36+
Par exemple:
3737

3838
```js run
3939
if (true) {
40-
var test = true; // use "var" instead of "let"
40+
var test = true; // utilise "var" au lieu "let"
4141
}
4242

4343
*!*
44-
alert(test); // true, the variable lives after if
44+
alert(test); // vrai, la variable existe après if
4545
*/!*
4646
```
4747

48-
`var` ignores code blocks, so we've got a global variable `test`.
48+
`var` ignore les blocs de code, alors nous avons une variable globale `test`.
4949

50-
If we used `let test` instead of `var test`, then the variable would only be visible inside `if`:
50+
Si nous aurions utilisé `let test` au lieu de `var test`, la variable aurait seulement été visible à l'intérieur de `if`:
5151

5252
```js run
5353
if (true) {
54-
let test = true; // use "let"
54+
let test = true; // utilise "let"
5555
}
5656

5757
*!*
58-
alert(test); // Error: test is not defined
58+
alert(test); // Erreur: test n'est pas défini
5959
*/!*
6060
```
6161

62-
The same thing for loops: `var` cannot be block- or loop-local:
62+
Même principe pour les boucles: `var` ne peut pas être locale pour les blocs ni les boucles :
6363

6464
```js
6565
for (var i = 0; i < 10; i++) {
6666
// ...
6767
}
6868

6969
*!*
70-
alert(i); // 10, "i" is visible after loop, it's a global variable
70+
alert(i); // 10, "i" est visible après la boucle, c'est une variable globale
7171
*/!*
7272
```
7373

74-
If a code block is inside a function, then `var` becomes a function-level variable:
74+
Si un bloc de code est à l'intérieur d'une fonction, `var` devient une variable à l'échelle de la fonction :
7575

7676
```js run
7777
function sayHi() {
7878
if (true) {
7979
var phrase = "Hello";
8080
}
8181

82-
alert(phrase); // works
82+
alert(phrase); // fonctionne
8383
}
8484

8585
sayHi();
86-
alert(phrase); // Error: phrase is not defined (Check the Developer Console)
86+
alert(phrase); // Erreur : phrase n'est pas définie (vérifiez la console développeur)
8787
```
8888

89-
As we can see, `var` pierces through `if`, `for` or other code blocks. That's because a long time ago in JavaScript blocks had no Lexical Environments. And `var` is a remnant of that.
89+
Comme nous pouvons le constater, `var` pénètre à travers `if`, `for` ou autres blocs de code. C'est parce que, il y a longtemps, les blocs de JavaScript n'avaient pas d'environnements lexicaux. Et `var` est un vestige de ce dernier.
9090

91-
## "var" declarations are processed at the function start
91+
## Les déclarations "var" sont traitées au début de la fonction
9292

93-
`var` declarations are processed when the function starts (or script starts for globals).
93+
Les déclarations `var` sont traitées quand la fonction commence (ou quand le script commence pour le cas global).
9494

95-
In other words, `var` variables are defined from the beginning of the function, no matter where the definition is (assuming that the definition is not in the nested function).
95+
En d'autres mots, les variables `var` sont définies au début de la fonction, peu importe où la définition se retrouve (présumant que la définition n'est pas dans une fonction imbriquée).
9696

97-
So this code:
97+
Alors ce code:
9898

9999
```js run
100100
function sayHi() {
@@ -109,7 +109,7 @@ function sayHi() {
109109
sayHi();
110110
```
111111

112-
...Is technically the same as this (moved `var phrase` above):
112+
...est techniquement identique à ceci (nous avons simplement bougé `var phrase` du code juste avant):
113113

114114
```js run
115115
function sayHi() {
@@ -124,7 +124,7 @@ function sayHi() {
124124
sayHi();
125125
```
126126

127-
...Or even as this (remember, code blocks are ignored):
127+
...ou même ceci (souvenez-vous, les blocs de code sont ignorés):
128128

129129
```js run
130130
function sayHi() {
@@ -141,13 +141,13 @@ function sayHi() {
141141
sayHi();
142142
```
143143

144-
People also call such behavior "hoisting" (raising), because all `var` are "hoisted" (raised) to the top of the function.
144+
Certains nomment ce comportement "hoisting" (hisser) parce que toutes les `var` sont "hoisted" (hissées) jusqu'en haut de la fonction.
145145

146-
So in the example above, `if (false)` branch never executes, but that doesn't matter. The `var` inside it is processed in the beginning of the function, so at the moment of `(*)` the variable exists.
146+
Alors dans l'exemple au dessus, la branche `if (false)` n'est jamais exécutée, mais ce n'est pas grave. La `var` à l'intérieur de cette branche est traitée au début de la fonction, alors au moment `(*)`, la variable existe.
147147

148-
**Declarations are hoisted, but assignments are not.**
148+
**Les déclarations sont hissées, mais les affectations ne le sont pas.**
149149

150-
That's better to demonstrate with an example, like this:
150+
Il convient mieux de démontrer cet énoncé avec un exemple, comme celui ci :
151151

152152
```js run
153153
function sayHi() {
@@ -161,40 +161,40 @@ function sayHi() {
161161
sayHi();
162162
```
163163

164-
The line `var phrase = "Hello"` has two actions in it:
164+
La ligne `var phrase = "Hello"` contient deux actions :
165165

166-
1. Variable declaration `var`
167-
2. Variable assignment `=`.
166+
1. Déclaration de la variable `var`
167+
2. Affectation de la variable `=`.
168168

169-
The declaration is processed at the start of function execution ("hoisted"), but the assignment always works at the place where it appears. So the code works essentially like this:
169+
La déclaration est traitée au début de l'exécution de la fonction ("hoisted"), mais l'affectation fonctionne toujours à l'endroit où elle apparaît. Essentiellement, le code fonctionne comme ceci :
170170

171171
```js run
172172
function sayHi() {
173173
*!*
174-
var phrase; // declaration works at the start...
174+
var phrase; // déclaration fonctionne au début...
175175
*/!*
176176

177177
alert(phrase); // undefined
178178

179179
*!*
180-
phrase = "Hello"; // ...assignment - when the execution reaches it.
180+
phrase = "Hello"; // ...affectation - quand l'exécution y parvient.
181181
*/!*
182182
}
183183

184184
sayHi();
185185
```
186186

187-
Because all `var` declarations are processed at the function start, we can reference them at any place. But variables are undefined until the assignments.
187+
Parce que toutes les déclarations `var` sont traitées au début de la fonction, nous pouvons y faire référence n'importe où. Mais les variables sont indéfinies jusqu'aux affectations.
188188

189-
In both examples above `alert` runs without an error, because the variable `phrase` exists. But its value is not yet assigned, so it shows `undefined`.
189+
Dans les deux exemples au dessus, `alert` fonctionne sans erreur parce que la variable `phrase` existe. Mais sa valeur n'est pas encore affectée, alors cela donne `undefined`.
190190

191-
## Summary
191+
## Résumé
192192

193-
There are two main differences of `var` compared to `let/const`:
193+
Il y a deux différences majeures entre `var` et `let/const`:
194194

195-
1. `var` variables have no block scope, they are visible minimum at the function level.
196-
2. `var` declarations are processed at function start (script start for globals).
195+
1. Les variables `var` n'ont pas de portée limitée aux blocs. Elles sont, au minimum, visibles au niveau de la fonction.
196+
2. Les déclarations `var` sont traitées au début de la fonction (ou au début du script pour le cas global).
197197

198-
There's one more minor difference related to the global object, we'll cover that in the next chapter.
198+
Il y a une autre différence mineure associée à l'objet global, mais nous traiterons ce point dans le prochain chapitre.
199199

200-
These differences make `var` worse than `let` most of the time. Block-level variables is such a great thing. That's why `let` was introduced in the standard long ago, and is now a major way (along with `const`) to declare a variable.
200+
Ces différences rendent `var` pire que `let` dans la plupart des cas. Les variables au niveau des blocs sont extraordinaires. C'est pourquoi `let` a été introduit au standard il y a longtemps et c'est maintenant un moyen majeur (avec `const`) pour déclarer une variable.

0 commit comments

Comments
 (0)