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/06-advanced-functions/07-new-function/article.md
+11-11Lines changed: 11 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,35 +5,35 @@ Il existe encore un autre moyen de créer une fonction. C'est rarement utilisé,
5
5
6
6
## Syntaxe
7
7
8
-
La syntaxe pour créer une fonction:
8
+
La syntaxe pour créer une fonction:
9
9
10
10
```js
11
11
let func =newFunction ([arg1, arg2, ...argN], functionBody);
12
12
```
13
13
14
14
La fonction est créée avec les arguments `arg1...argN` et le `functionBody` donné.
15
15
16
-
C'est plus facile à comprendre en regardant un exemple. Voici une fonction avec deux arguments:
16
+
C'est plus facile à comprendre en regardant un exemple. Voici une fonction avec deux arguments:
17
17
18
18
```js run
19
19
let sum =newFunction('a', 'b', 'return a + b');
20
20
21
21
alert( sum(1, 2) ); // 3
22
22
```
23
23
24
-
Et voici une fonction sans arguments, seulement le corps de la fonction:
24
+
Et voici une fonction sans arguments, seulement le corps de la fonction:
25
25
26
26
```js run
27
27
let sayHi =newFunction('alert("Hello")');
28
28
29
29
sayHi(); // Hello
30
30
```
31
31
32
-
La différence majeure par rapport aux autres méthodes que nous avons deja vu est que la fonction est créée littéralement à partir d'une chaîne de caractères passée au moment de l'exécution.
32
+
La différence majeure par rapport aux autres méthodes que nous avons déjà vu est que la fonction est créée littéralement à partir d'une chaîne de caractères passée au moment de l'exécution.
33
33
34
34
Toutes les déclarations précédentes nous demandait, nous les programmeurs, d'écrire le code de la fonction dans le script.
35
35
36
-
Mais `new Function` nous permet de convertir n'importe qu'elle chaine de caractères en fonction. Par exemple, nous pouvons recevoir une nouvelle fonction d’un serveur puis l’exécuter:
36
+
Mais `new Function` nous permet de convertir n'importe qu'elle chaine de caractères en fonction. Par exemple, nous pouvons recevoir une nouvelle fonction d’un serveur puis l’exécuter:
37
37
38
38
```js
39
39
let str =... receive the code from a server dynamically ...
@@ -66,7 +66,7 @@ function getFunc() {
66
66
getFunc()(); // error: value is not defined
67
67
```
68
68
69
-
Comparez-le avec le comportement habituel:
69
+
Comparez-le avec le comportement habituel:
70
70
71
71
```js run
72
72
functiongetFunc() {
@@ -88,11 +88,11 @@ Imaginons que nous devions créer une fonction à partir d'une chaîne de caract
88
88
89
89
Notre nouvelle fonction doit interagir avec le script principal.
90
90
91
-
Et si il pouvait accéder aux variables externes?
91
+
Et si il pouvait accéder aux variables externes?
92
92
93
-
Le problème est qu'avant la publication de JavaScript en production, JavaScript est compressé à l'aide d'un *minifier*, un programme spécial qui rétrécit le code en supprimant les commentaires, espaces supplémentaires et, plus particuliarement, renomme les variables locales pour quelles soient plus courtes.
93
+
Le problème est qu'avant la publication de JavaScript en production, JavaScript est compressé à l'aide d'un *minifier*, un programme spécial qui rétrécit le code en supprimant les commentaires, espaces supplémentaires et, plus particulièrement, renomme les variables locales pour quelles soient plus courtes.
94
94
95
-
Par exemple, si une fonction a `let userName`, le minifier la remplace par `let a` (ou une autre lettre si celle-ci est deja prise), et le fait partout. C’est généralement une chose sûre à faire, car la variable est locale, rien en dehors de la fonction ne peut y accéder. Et à l'intérieur de la fonction, le minifier remplace chaque mention. Les minifiers sont intelligents, ils analysent la structure du code pour ne rien casser. Ils ne sont pas juste une simple fonction de trouvaille et remplacement.
95
+
Par exemple, si une fonction a `let userName`, le minifier la remplace par `let a` (ou une autre lettre si celle-ci est déjà prise), et le fait partout. C’est généralement une chose sûre à faire, car la variable est locale, rien en dehors de la fonction ne peut y accéder. Et à l'intérieur de la fonction, le minifier remplace chaque mention. Les minifiers sont intelligents, ils analysent la structure du code pour ne rien casser. Ils ne sont pas juste une simple fonction de recherche et remplacement.
96
96
97
97
Donc, si `new Function` avait accès aux variables externes, il serait impossible de trouver le nom d'utilisateur `userName` renommé.
98
98
@@ -104,7 +104,7 @@ Pour passer quelque chose à une fonction créée par `new Function`, nous devon
104
104
105
105
## Résumé
106
106
107
-
La syntaxe:
107
+
La syntaxe:
108
108
109
109
```js
110
110
let func =newFunction ([arg1, arg2, ...argN], functionBody);
@@ -120,4 +120,4 @@ new Function('a,b', 'return a + b'); // séparés par des virgules
120
120
newFunction('a , b', 'return a + b'); // séparés par des virgules et espacés
121
121
```
122
122
123
-
fonctions créées avec `new Function` ont leur `[[Environment]]` qui fait référence à l’environnement lexical global, et non l’environnement externe. Par conséquent, elles ne peuvent pas utiliser de variables externes. Mais c’est bien, parce que cela nous protège des erreurs. Passer explicitement des paramètres est une méthode bien meilleure sur le plan architectural et ne pose aucun problème avec les minifiers.
123
+
Les fonctions créées avec `new Function` ont leur `[[Environment]]` qui fait référence à l’environnement lexical global, et non à l’environnement externe. Par conséquent, elles ne peuvent pas utiliser de variables externes. Mais c’est bien, parce que cela nous protège des erreurs. Passer explicitement des paramètres est une méthode bien meilleure sur le plan architectural et ne pose aucun problème avec les minifiers.
0 commit comments