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
+7-7Lines changed: 7 additions & 7 deletions
Original file line number
Diff line number
Diff line change
@@ -31,7 +31,7 @@ sayHi(); // Olá
31
31
32
32
A maior diferença de outros métodos vistos é que a função é literalmente criada a partir de uma `string`, que é passada em tempo de execução.
33
33
34
-
Todas as declarações anteriores requeriam de nós, programadores, escrever o código da função dentro do `script`.
34
+
Todas as declarações anteriores requeriam de nós, programadores, escrever o código da função dentro do *script*.
35
35
36
36
Mas `new Function` permite transformar qualquer `string` em uma função. Por exemplo, nós podemos receber uma nova função de um servidor e executa-la:
37
37
@@ -42,7 +42,7 @@ let func = new Function(str);
42
42
func();
43
43
```
44
44
45
-
Ela é usada em casos muito específicos, como quando nós recebemos código de um servidor, ou para compilar dinamicamente a função a partir de um `template`. A necessidade disso geralmente surge em estágios avançados de desenvolvimento.
45
+
Ela é usada em casos muito específicos, como quando nós recebemos código de um servidor, ou para compilar dinamicamente a função a partir de um *template*. A necessidade disso geralmente surge em estágios avançados de desenvolvimento.
46
46
47
47
## Closure
48
48
@@ -83,17 +83,17 @@ getFunc()(); // *!*"teste"*/!*, do escopo léxico de getFunc
83
83
84
84
Essa caracteristica especial de `new Function` parece estranha, mas se apresenta muito útil na prática.
85
85
86
-
Imagine que nós precisamos criar uma função a partir de uma `string`. O código dessa função é desconhecido durante a escrita do script (por esse motivo nós não usamos funções regulares), mas vai ser conhecido durante o processo de execução. Nós podemos recebe-lo do servidor ou de outra fonte.
86
+
Imagine que nós precisamos criar uma função a partir de uma `string`. O código dessa função é desconhecido durante a escrita do *script* (por esse motivo nós não usamos funções regulares), mas vai ser conhecido durante o processo de execução. Nós podemos recebe-lo do servidor ou de outra fonte.
87
87
88
-
Nossa nova função precisa interagir com o `script` principal.
88
+
Nossa nova função precisa interagir com o *script* principal.
89
89
90
90
Talvez nós queremos que ela consiga acessar variáveis locias externas?
91
91
92
-
O problema é que antes do JavaScript ser publicado para produção, ele é comprimido usando um *minificador* -- um programa especial que encolhe código removendo comentários, espaços e -- o mais importante, renomeia variáveis locais em variáveis mais curtas.
92
+
O problema é que antes do JavaScript ser publicado para produção, ele é comprimido usando um "minificador" -- um programa especial que encolhe código removendo comentários, espaços e -- o mais importante, renomeia variáveis locais em variáveis mais curtas.
93
93
94
94
Por exemplo, se uma função tem `let userName`, o minificador o troca por `let a` (ou outra letra se esta estiver ocupada), e ele faz isso em toda parte. Isso usualmente é uma coisa segura de se fazer, porque a variável é local, nada fora da função pode acessar ela. E dentro da função, o minificador troca todas as suas menções. Minificadores são inteligentes, eles analisam a estrutura do código, para que eles não quebrem nada. Eles não são um simples "encontra-e-repõem".
95
95
96
-
Entretanto, se `new Function` pudesse acessar variáveis externas, então ele não conseguiria encontrar `userName`, pois ele é passado como uma string *depois* que o código é minificado.
96
+
Entretanto, se `new Function` pudesse acessar variáveis externas, então ele não conseguiria encontrar `userName`, pois ele é passado como uma string **depois** que o código é minificado.
97
97
98
98
**Mesmo se nós pudessemos acessar o escopo léxico externo na `new Function`, nós teriamos problemas com minificadores.**
99
99
@@ -124,7 +124,7 @@ A sintaxe:
124
124
let func =newFunction(arg1, arg2, ..., body);
125
125
```
126
126
127
-
Por razões históricas, arguments can also be given as a comma-separated list.
127
+
Por razões históricas, argumentos também podem ser dados como uma lista separada por vírgulas.
0 commit comments