# ¿Que es REPL?

En la serie anterior pudimos observar cómo ejecutar un archivo de JavaScript con Node.js, con el siguiente comando:

```
node index.js
```

Utilizamos el comando `node` y le enviamos el argumento de `index.js` para ejecutarlo. Pero Node.js no solamente se puede utilizar para ejecutar programas, también se puede utilizar como un programa de línea de comandos para evaluar expresiones; esto se llama REPL \(_Read Eval Print Loop_\). Para ingresar, sencillamente utilizamos el siguiente comando:

```
node
```

Se pueden escribir expresiones como: `1+1` y presionar la tecla `ENTER` o expresiones como `"A" === "A"` y presionar la tecla `ENTER`. Como su nombre lo dice, por cada uno de los comandos introducidos, realiza las siguientes operaciones:

1. Lee la expresión
2. Evalúa la expresión
3. Imprime el resultado
4. Repite el proceso

Para salir de este ciclo se puede utilizar la combinación de teclas `Ctrl+C` dos veces, también se puede utilizar la combinación de teclas `CTRL+D` o la expresión `process.exit(0)`.

Inclusive se puede escribir un programa completo.

```
node (ENTER)
var a = 0; (ENTER)
if (a === 0) { (ENTER)
console.log("a == 0"); (ENTER)
} (ENTER)
```

> La palabra `ENTER` se coloca para indicar cuándo se presiona dicha tecla

Se puede notar que al escribir la expresión `if (a === 0) {` y se presiona la tecla `ENTER`; no se evalúa inmediatamente, ya que en la presencia del `{` indica el comienzo de un bloque y al ingresar `}` se termina evaluando todo el bloque.

Para mayor comodidad, se puede introducir el comando `.editor` para habilitar un editor en la línea de comando para crear el programa con mayor facilidad:

```
node
> .editor
// Entering editor mode (^D to finish, ^C to cancel)
```

Todos los comandos listados a continuación se pueden utilizar dentro de la línea de comandos de REPL y NO en la línea de comandos del sistema:

* La tecla `TAB` muestra un listado de todas las funciones disponibles.
* El comando `.break` o `CTRL+C` permite añadir una nueva línea.
* Una vez finalizamos la sesión todas las variables se pierden, pero se puede guardar en un archivo con el siguiente comando `.save [nombre-de-archivo]`.
* De la misma manera, se pueden cargar nuevamente con el comando `.load [nombre-del-archivo]`.
* El listado de otros comandos está disponible con el comando `.help`.

En conclusión, Node REPL es muy útil para probar funcionalidades de manera muy rápida o inclusive depurar un programa.

Más información:

* [Node REPL](https://nodejs.org/api/repl.html)

