Repository navigation
Conversation
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
| Porém, o usuário pode digitar qualquer texto ou código. | ||
|
|
||
| To make things safe, and limit it to arithmetics only, we can check the `expr` using a [regular expression](info:regular-expressions), so that it only may contain digits and operators. | ||
| Para deixar as coisas seguras, e limitar só a aritmética, podemos verificar `expr` usando uma [expressão regular](info:regular-expressions), de forma que ela só possa conter dígitos e operadores. |
There was a problem hiding this comment.
Tradução muda o sentido: "limitar só a aritmética" se lê como "restringir apenas a aritmética", o oposto do original ("limit it to arithmetics only"). Sugestão:
| Para deixar as coisas seguras, e limitar só a aritmética, podemos verificar `expr` usando uma [expressão regular](info:regular-expressions), de forma que ela só possa conter dígitos e operadores. | |
| Para deixar as coisas seguras e limitá-la apenas à aritmética, podemos verificar `expr` usando uma [expressão regular](info:regular-expressions), de forma que ela só possa conter dígitos e operadores. |
| ``` | ||
|
|
||
| The eval'ed code is executed in the current lexical environment, so it can see outer variables: | ||
| O código executado pelo eval roda no Ambiente Léxico atual, então ele consegue ver as variáveis externas: |
There was a problem hiding this comment.
Terminologia inconsistente: "Ambiente Léxico" (também nas linhas 57 e 68) diverge de "Ambiente Lexical", usado em 1-js/06-advanced-functions/07-new-function/article.md — capítulo linkado por este mesmo artigo (<info:new-function>). Leitor encontra dois termos para o mesmo conceito. Padronizar em "Ambiente Lexical".
| Observe que sua capacidade de acessar variáveis externas tem efeitos colaterais. | ||
|
|
||
| Code minifiers (tools used before JS gets to production, to compress it) rename local variables into shorter ones (like `a`, `b` etc) to make the code smaller. That's usually safe, but not if `eval` is used, as local variables may be accessed from eval'ed code string. So minifiers don't do that renaming for all variables potentially visible from `eval`. That negatively affects code compression ratio. | ||
| Minificadores de código (ferramentas usadas antes do JS ir pra produção, pra comprimi-lo) renomeiam variáveis locais para nomes mais curtos (tipo `a`, `b` etc.) pra deixar o código menor. Isso normalmente é seguro, mas não quando `eval` é usado, já que variáveis locais podem ser acessadas a partir da string de código do eval. Então os minificadores não fazem essa renomeação para todas as variáveis potencialmente visíveis a partir do `eval`. Isso afeta negativamente a taxa de compressão do código. |
There was a problem hiding this comment.
Registro informal ("pra produção", "pra comprimi-lo", "tipo a, b", "pra deixar") destoa do resto do artigo, que usa "para" — e a própria frase mistura "pra" e "para". Sugestão: trocar por "para" / "como a, b etc.".
| @@ -1,25 +1,25 @@ | |||
| # Eval: run a code string | |||
| # Eval: executa uma string de código | |||
There was a problem hiding this comment.
Título: "executa" (3ª pessoa) soa como frase descritiva, não título. Outros títulos do tutorial usam substantivo/infinitivo. Sugestão: # Eval: executando uma string de código ou # Eval: executar uma string de código.
| Uma chamada a `eval(code)` roda a string de código e retorna o resultado da última instrução. | ||
| - Raramente usado no JavaScript moderno, já que normalmente não há necessidade. | ||
| - Pode acessar variáveis locais externas. Isso é considerado má prática. | ||
| - Em vez disso, para executar o `eval` do código no escopo global, use `window.eval(code)`. |
There was a problem hiding this comment.
Construção truncada: "executar o eval do código" não faz sentido. Sugestão: "Em vez disso, para executar o código com eval no escopo global, use window.eval(code)."
|
|
||
| ```js demo run | ||
| let expr = prompt("Type an arithmetic expression?", '2*3+2'); | ||
| let expr = prompt("Digite uma expressão aritmética?", '2*3+2'); |
There was a problem hiding this comment.
Pergunta com imperativo: "Digite uma expressão aritmética?" — o "?" herdado do original fica estranho em português. Sugestão: prompt("Digite uma expressão aritmética:", '2*3+2').
Tradução do artigo "Eval: run a code string" para o português, incluindo o exercício.
Conforme comentado na #1.