|
1 | 1 | ---
|
2 | 2 | chapter: 27
|
3 | 3 | pageNumber: 258
|
4 |
| -description: Understanding JavaScript Engines and how they execute JavaScript code. |
| 4 | +description: Comprender los motores de JavaScript y cómo ejecutan el código JavaScript. |
5 | 5 | ---
|
6 | 6 |
|
7 |
| -## Understanding JavaScript Engines |
| 7 | +# Comprender los motores de JavaScript y cómo ejecutan el código JavaScript |
8 | 8 |
|
9 |
| -A JavaScript engine is a program or an interpreter that executes JavaScript code. The most well-known JavaScript engines are V8 (used in Google Chrome and Node.js), SpiderMonkey (used in Firefox), and JavaScriptCore (used in Safari). |
| 9 | +Un motor de JavaScript es un programa o intérprete que ejecuta código JavaScript. Los motores de JavaScript más conocidos son V8 (utilizado en Google Chrome y Node.js), SpiderMonkey (utilizado en Firefox) y JavaScriptCore (utilizado en Safari). |
10 | 10 |
|
11 |
| -### How JavaScript Engines Work |
| 11 | +## Cómo funcionan los motores de JavaScript |
12 | 12 |
|
13 |
| -JavaScript engines perform several key tasks to execute JavaScript code efficiently: |
| 13 | +Los motores de JavaScript realizan varias tareas clave para ejecutar el código JavaScript de manera eficiente: |
14 | 14 |
|
15 |
| -1. **Parsing**: The engine parses the JavaScript code into an Abstract Syntax Tree (AST). |
16 |
| -2. **Compilation**: The AST is then compiled into bytecode or machine code. |
17 |
| -3. **Execution**: The compiled code is executed by the engine. |
| 15 | +1. **Análisis**: El motor analiza el código JavaScript en un árbol de sintaxis abstracta (AST). |
| 16 | +2. **Compilación**: Luego, el AST se compila en código de bytes o código de máquina. |
| 17 | +3. **Ejecución**: El código compilado es ejecutado por el motor. |
18 | 18 |
|
19 |
| -### Example of JavaScript Engine Workflow |
| 19 | +### Ejemplo de flujo de trabajo del motor JavaScript |
20 | 20 |
|
21 |
| -Here's a simple example to illustrate the workflow of a JavaScript engine: |
| 21 | +A continuación se muestra un ejemplo sencillo para ilustrar el flujo de trabajo de un motor de JavaScript: |
22 | 22 |
|
23 |
| -```javascript |
24 |
| -function add(a, b) { |
| 23 | +````javascript |
| 24 | +function agrega(a, b) { |
25 | 25 | return a + b;
|
26 | 26 | }
|
27 | 27 |
|
28 |
| -console.log(add(2, 3)); // Output: 5 |
29 |
| -``` |
30 |
| - |
31 |
| -### Parsing |
32 |
| - |
33 |
| -The engine first parses the code into an AST. For the above code, the AST might look something like this: |
34 |
| - |
35 |
| -``` |
36 |
| -Program |
37 |
| - ├── FunctionDeclaration (add) |
38 |
| - │ ├── Identifier (a) |
39 |
| - │ ├── Identifier (b) |
40 |
| - │ └── BlockStatement |
41 |
| - │ └── ReturnStatement |
42 |
| - │ └── BinaryExpression (+) |
43 |
| - │ ├── Identifier (a) |
44 |
| - │ └── Identifier (b) |
45 |
| - └── ExpressionStatement |
46 |
| - └── CallExpression (console.log) |
47 |
| - └── CallExpression (add) |
| 28 | +console.log(agrega(2, 3)); // Salida: 5 |
| 29 | +```` |
| 30 | + |
| 31 | +### Análisis |
| 32 | + |
| 33 | +El motor primero analiza el código y lo convierte en un AST. Para el código anterior, el AST podría verse así: |
| 34 | + |
| 35 | +```text |
| 36 | +Programacion |
| 37 | + ├── DeclaracionFuncion (agrega) |
| 38 | + │ ├── Identificador (a) |
| 39 | + │ ├── Identificador (b) |
| 40 | + │ └── SentenciaDeBloque |
| 41 | + │ └── SentenciaReturn |
| 42 | + │ └── ExpresionBinaria (+) |
| 43 | + │ ├── Identificador (a) |
| 44 | + │ └── Identificador (b) |
| 45 | + └── SentenciaExpresion |
| 46 | + └── LlamadaExpresion (console.log) |
| 47 | + └── LlamadaExpresion (agrega) |
48 | 48 | ├── Literal (2)
|
49 | 49 | └── Literal (3)
|
50 | 50 | ```
|
51 | 51 |
|
52 |
| -### Compilation |
| 52 | +### Compilación |
53 | 53 |
|
54 |
| -The AST is then compiled into bytecode or machine code. This step involves optimizations to improve performance. |
| 54 | +Luego, el AST se compila en código de bytes o código de máquina. Este paso implica optimizaciones para mejorar el rendimiento. |
55 | 55 |
|
56 |
| -### Execution |
| 56 | +### Ejecución |
57 | 57 |
|
58 |
| -The compiled code is executed by the engine. In this case, the `add` function is called with arguments `2` and `3`, and the result `5` is logged to the console. |
| 58 | +El motor ejecuta el código compilado. En este caso, se llama a la función `add` con los argumentos `2` y `3`, y el resultado `5` se registra en la consola. |
59 | 59 |
|
60 |
| -### Just-In-Time (JIT) Compilation |
| 60 | +### Compilación Just-In-Time (JIT) |
61 | 61 |
|
62 |
| -Modern JavaScript engines use Just-In-Time (JIT) compilation to improve performance. JIT compilation involves compiling code at runtime, rather than before execution. This allows the engine to optimize the code based on actual usage patterns. |
| 62 | +Los motores de JavaScript modernos utilizan la compilación Just-In-Time (JIT) para mejorar el rendimiento. La compilación JIT implica compilar el código en tiempo de ejecución, en lugar de antes de la ejecución. Esto permite que el motor optimice el código en función de los patrones de uso reales. |
63 | 63 |
|
64 |
| -### Example of JIT Compilation |
| 64 | +### Ejemplo de compilación JIT |
65 | 65 |
|
66 | 66 | ```javascript
|
67 |
| -function multiply(a, b) { |
| 67 | +function multiplica(a, b) { |
68 | 68 | return a * b;
|
69 | 69 | }
|
70 | 70 |
|
71 | 71 | for (let i = 0; i < 1000000; i++) {
|
72 |
| - multiply(2, 3); |
| 72 | + multiplica(2, 3); |
73 | 73 | }
|
74 | 74 | ```
|
75 | 75 |
|
76 |
| -In this example, the `multiply` function is called repeatedly. A JIT compiler can optimize the function after detecting that it is a hot function (i.e., frequently called). |
| 76 | +En este ejemplo, la función `multiplica` se llama repetidamente. Un compilador JIT puede optimizar la función después de detectar que es una función activa (es decir, que se llama con frecuencia). |
77 | 77 |
|
78 |
| -### Garbage Collection |
| 78 | +### Recolección de basura |
79 | 79 |
|
80 |
| -JavaScript engines also include garbage collectors to manage memory. The garbage collector automatically frees up memory that is no longer in use, preventing memory leaks. |
| 80 | +Los motores de JavaScript también incluyen recolectores de basura para administrar la memoria. El recolector de basura libera automáticamente la memoria que ya no se utiliza, lo que evita fugas de memoria. |
81 | 81 |
|
82 |
| -### Example of Garbage Collection |
| 82 | +### Ejemplo de Recolección de Basura |
83 | 83 |
|
84 | 84 | ```javascript
|
85 |
| -function createObject() { |
86 |
| - return { name: "Object" }; |
| 85 | +function creaObjeto() { |
| 86 | + return { nombre: "Objeto" }; |
87 | 87 | }
|
88 | 88 |
|
89 |
| -let obj = createObject(); |
90 |
| -obj = null; // The object is now eligible for garbage collection |
| 89 | +let obj = creaObjeto(); |
| 90 | +obj = null; // El objeto ahora es elegible para la recolección de basura. |
91 | 91 | ```
|
92 |
| -In this example, the object created by `createObject` is eligible for garbage collection after `obj` is set to `null`. |
| 92 | + |
| 93 | +En este ejemplo, el objeto creado por `creaObjeto` es elegible para la recolección de basura después de que `obj` se establece en `null`. |
0 commit comments