Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Comando:
Una instrucción que realiza una acción, ejecuta un proceso y produce una salida (realiza una
acción).
Estructura de un comando:
Los nombres de los comandos se basan, frecuentemente, en la acción que hacen o la función
de ese comando.
La terminal es sensible a las mayúsculas
Ej:
-el comando pwd=print working directory/imprimir el directorio.
-ls=list/listar – al ejecutarse realiza lista de todos los archivos y carpetas del directorio en el
que estamos trabajando
Las opciones de comandos alteran el comportamiento por defecto del mismo comando,
agregando mayor información o utilidad al mismo comando respecto de su uso básico. Las
opciones son todas las precedidas por un guión y sirven para alterar el comportamiento del
comando agregando alguna funcionalidad extra. Ej: ls -a permite ver archivos ocultos.
Todos los comandos tienen opciones diferentes, por lo que no está demás hacer lista con los
más usados.
Comando mkdir=make directory/crear carpeta. Si ponemos el comando solo, no hará nada ya
que se necesita que se agregue el nombre de la carpeta que se va a crear, el nombre será el
argumento. Para usar espacio en los argumentos, debemos usar comillas dobles o simples. Ej:
mkdir “mi primer carpeta”
Los argumentos indican sobre qué elementos se aplicará la instrucción o el comando escrito;
dentro de un comando son todos aquellos sobre los cuales se aplicará el comando que
escribimos. Se puede combinar opciones y argumentos en un comando. Ej: mkdir -v =para
que se confirme la creación del dir
CLI
La interfaz de línea de comandos o CLI, en inglés, command line interfaces, que no es más que una caja negra
que puede recibir comandos a través de la escritura por medio de un teclado conectado a la computadora,
procesarlos y arrojar un resultado, ya sea positivo si el comando se leyó con éxito, o negativo si escribimos algo
erróneo o la computadora no pudo procesar el comando escrito.
Comando
Un comando es simplemente una instrucción que al ejecutarlo en la CLI realiza una acción, cuando se recibe el
comando el sistema operativo ejecuta un proceso que puede leerlo, manipular datos y producir una salida.
Qué es un repositorio?
Almacen o lugar donde se guardan ciertas cosas. En el mundo tech está la necesidad de
guardar, mantener y manipular el código que se escribe hoy para poder trabajarlo días, meses
o años más adelante. Para ello, en 2007 se lanza GIT: Git es un sistema de control de
versiones de código, es decir; un sistema que registra los cambios realizados en un archivo o
conjunto de archivos a lo largo del tiempo, de modo que puedas recuperar versiones
específicas más adelante. Además, brinda la posibilidad de compartir y realizar un
trabajo/proyecto colaborativo. estos proyectos estarán almacenados en un “repositorio”.
Con Git ya estamos controlando las versiones de nuestro código, pero también deseamos
guardar este código en internet (en la nube) para poder compartirlo, y tener un respaldo de él.
Para cumplir esta función existen diferentes herramientas como: gitLab, bitbucket o Github,
nosotros recomendamos utilizar esta última. Github.com es una red para almacenar tus
repositorios, esencialmente es un repositorio de repositorios, y actualmente es el más popular
entre la comunidad de desarrolladores. Es importante aclarar que Git no es igual que Github,
aunque funcionan muy bien juntos.
La diferencia principal entre Git y GitHub es que Git es una herramienta de código abierto
que los desarrolladores instalan localmente para gestionar el código fuente, mientras que
GitHub es un servicio en línea al que los desarrolladores que utilizan Git pueden conectarse y
cargar o descargar recursos.
En resumen, Git es el sistema de control de versiones y GitHub es un servicio de alojamiento
para los repositorios de Git.
Configuración de credenciales GIT para poder empezar a usarlo y nos reconozca como
propietarios o colaboradores de un repositorio. Debemos abrir la consola GitBash y
configurar el mail, debe ser el mismo que usamos para Git
git config --global user.email "tu@email.com”
luego configuraremos el nombre de usuario que puede ser cualquiera:
git config --global user.name "tu nombre"
para crear archivo dentro de carpeta, nos debemos situar dentro de la carpeta
$ cd “nombredelacarpeta”/
$ touch “Mi primer repositorio.txt”
Para abrir el archivo desde el editor de códigos que elegimos, ingresamos en gitbash
$ code "Mi primer repositorio.txt"
Con eso, abrimos y podemos editar el archivo .txt desde el editor de código (VScode)
Una vez creado el repositorio, todos los archivos que estén dentro pasan a estar en fase/estado
de seguimiento git.
Commit:
Captura instantánea de los cambios preparados en ese momento del proyecto. El comando
commit guarda una ‘foto’ del estado de los archivos y carpetas del repositorio local, al
momento de ‘ser tomada’ y para hacer el seguimiento. Estamos guardando el estado actual de
nuestro proyecto.
El commit se hará sobre archivos, no se hará sobre carpetas vacías.
Una vez que clonamos el repositorio a nuestra pc, trabajamos desde ahí con los archivos,
luego le damos git add para subirlos a nuestro repositorio y con git push lo subimos de
manera definitiva al repositorio de git, se sincroniza con el respositorio remoto desde nuestra
pc local.
Puede haber variaciones de este comando, ej: git push origin main refiere al origen donde
queremos enviar la información, main indica la rama de trabajo a la cual le enviaremos. O git
push -u origin main
Para crear un repositorio sin un archivo README.md, hacemos los mismo que antes pero sin
tildar la creación de ese archivo. Luego, en GitHub nos saldrá opciones para hacer y así tener
contenido en el repositorio:
- Crear un archivo README.md:
echo "# PrepCourse-Henry-NoREADME" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main // modifica el nombre de la rama de trabajo actual
git remote add origin https://github.com/Adriana-Carra/PrepCourse-Henry-NoREADME.git
git push -u origin main
HTML
El Lenguaje de Marcado de Hipertexto (HTML) es el código que se utiliza para estructurar y
desplegar una página web y sus contenidos.
Entonces, ¿qué es HTML en realidad?
HTML no es un lenguaje de programación; es un lenguaje de marcado que define la estructura
de tu contenido. HTML consiste en una serie de elementos que usarás para encerrar diferentes
partes del contenido para que se vean o se comporten de una determinada manera.
Los atributos contienen información adicional acerca del elemento, la cual no quieres que
aparezca en el contenido real del elemento. Aquí class es el nombre del atributo y editor-note
el valor del atributo. En este caso, el atributo class permite darle al elemento un nombre
identificativo, que se puede utilizar luego para apuntarle al elemento información de estilo y
demás cosas.
Anidar elementos
Puedes también colocar elementos dentro de otros elementos —esto se llama anidamiento—.
Si, por ejemplo, quieres resaltar una palabra del texto (en el ejemplo la palabra «muy»),
podemos encerrarla en un elemento <strong>, que significa que dicha palabra se debe
enfatizar:
Debes asegurarte que los elementos estén correctamente anidados: en el ejemplo de abajo,
creaste la etiqueta de apertura del elemento <p> primero, luego la del elemento <strong>, por
lo tanto, debes cerrar esta etiqueta primero, y luego la de <p>. Esto es incorrecto:
Elementos vacíos
Algunos elementos no poseen contenido, y son llamados elementos vacíos. Toma, por
ejemplo, el elemento <img> de nuestro HTML:
Posee dos atributos, pero no hay etiqueta de cierre </img> ni contenido encerrado. Esto es
porque un elemento de imagen no encierra contenido al cual afectar. Su propósito es
desplegar una imagen en la página HTML, en el lugar en que aparece.
Anatomía de un documento HTML
Ahora verás cómo los elementos individuales son combinados para formar una página HTML
entera.
Tienes:
● <!DOCTYPE html> — el tipo de documento. Es un preámbulo requerido.
Anteriormente, cuando HTML era joven, los tipos de documento actuaban como vínculos a
un conjunto de reglas que el código HTML de la página debía seguir para ser considerado
bueno. Sin embargo, hoy día es simplemente debe ser incluido para que todo funcione
correctamente.
● <html></html> — el elemento <html>. Este elemento encierra todo el contenido de
la página entera y, a veces, se le conoce como el elemento raíz (root element).
● <head></head> — el elemento <head>. Este elemento actúa como un contenedor de
todo aquello que quieres incluir en la página HTML que no es contenido visible por los
visitantes de la página. Incluye cosas como palabras clave (keywords), una descripción de la
página que quieres que aparezca en resultados de búsquedas, código CSS para dar estilo al
contenido, declaraciones del juego de caracteres, etc.
● <meta charset="utf-8"> — <meta>. Este elemento establece el juego de caracteres
que tu documento usará en utf-8, que incluye casi todos los caracteres de todos los idiomas
humanos. Básicamente, puede manejar cualquier contenido de texto que puedas incluir.
● <title></title> — el elemento <title> establece el título de tu página, que es el título
que aparece en la pestaña o en la barra de título del navegador cuando la página es cargada, y
se usa para describir la página cuando es añadida a los marcadores o como favorita.
● <body></body> — el elemento <body>. Encierra todo el contenido que deseas
mostrar a los usuarios web que visiten tu página, ya sea texto, imágenes, videos, juegos, pistas
de audio reproducibles, y demás.
Marcado de texto
Encabezados
Los elementos de encabezado permiten especificar que ciertas partes del contenido son
encabezados, o subencabezados del contenido. HTML posee seis niveles de encabezados,
<h1>–<h6>, aunque probablemente solo llegues a usar 3-4 como mucho:
Párrafos
Los elementos <p> se utilizan para encerrar párrafos de texto; los usarás frecuentemente para
el marcado de contenido de texto regular:
Listas
El marcado de listas se realiza siempre en al menos dos elementos. Los dos tipos de listas más
comunes son las listas ordenadas y las desordenadas:
1. Las listas desordenadas son aquellas en las que el orden de los items no es relevante, como
en una lista de compras. Estas son encerradas en un elemento <ul> (unordered list).
2. Las listas ordenadas son aquellas en las que el orden sí es relevante, como en una receta.
Estas son encerradas en un elemento <ol> (ordered list).
Cada elemento de la lista se coloca dentro de un elemento <li> (list item).
Por ejemplo, si quieres transformar parte del siguiente párrafo en una lista:
Vínculos
Los vínculos o enlaces son muy importantes —son los que hacen de la web, la web—. Para
implementar un vínculo, necesitas usar un vínculo simple — <a> — la a es la abreviatura de
la palabra inglesa «anchor» («ancla»). Para convertir algún texto dentro de un párrafo en un
vínculo, sigue estos pasos:
1. Elige algún texto.
2. Encierra el texto en un elemento <a>, así:
4. Completa el valor de este atributo con la dirección web con la que quieras conectar al
vínculo:
Homeworks
IMPORTANTE: Para ejecutar los tests de cada homework tenes que pararte en la carpeta
donde clonaste tu repo (es decir la carpeta donde está este README.md) y ejecutar el
siguiente comando:
npm install
Esto instalará todas las dependencias necesarias (lo tenes que hacer una sola vez), una vez
terminado y cada vez que quieras ver cuantos tests pasaste ejecutá:
npm test {nombre del homework}.test.js
Por ejemplo, para ejecutar los tests del homework 02, ejecutar: npm test JSII.test.js, el del
homework 01: npm test JSI.test.js y así.
No todos los homeworks tienen tests, está detallado en la descripción de cada uno.
------------------------------------------------------
CLI: consiste en un promt (representado por signo $) espacio donde puedo tirar comando.
$ head -n3 README.md (este comando muestra las tres primeras líneas de un archivo
readme)
Locales:
Un método de control de versiones, usado por muchas personas, es copiar los archivos a otro
directorio (quizás indicando la fecha y hora en que lo hicieron, si son ingeniosos). Este
método es muy común porque es muy sencillo, pero también es tremendamente propenso a
errores. Es fácil olvidar en qué directorio te encuentras y guardar accidentalmente en el
archivo equivocado o sobrescribir archivos que no querías.
Como se pueden imaginar, este sistema funciona bien para trabajar solos, pero si queremos
incorporar otra gente al equipo van a empezar a surgir problemas.
Centralizado
Distribuido
Es aquí donde entran los sistemas de control de versiones distribuidos (Distributed Version
Control Systems o DVCSS en inglés). En un DVCS (como Git, Mercurial, Bazaar o Darcs),
los clientes no sólo descargan la última instantánea de los archivos: replican completamente el
repositorio. Así, si un servidor muere, y estos sistemas estaban colaborando a través de él,
cualquiera de los repositorios de los clientes puede copiarse en el servidor para restaurarlo.
Conceptos de Git
Git modela sus datos como un conjunto de instantáneas de un mini sistema de archivos. Cada
vez que confirmas un cambio, o guardas el estado de tu proyecto en Git, él básicamente hace
una foto del aspecto de todos tus archivos en ese momento, y guarda una referencia a esa
instantánea. Para ser eficiente, si los archivos no se han modificado, Git no almacena el
archivo de nuevo, sólo un enlace al archivo anterior idéntico que ya tiene almacenado.
La mayoría de las operaciones en Git sólo necesitan archivos y recursos locales para operar.
Por lo general no se necesita información de ningún otro ordenador de tu red. Como tienes
toda la historia del proyecto ahí mismo, en tu disco local, la mayoría de las operaciones
parecen prácticamente inmediatas (con otros sistemas el proceso involucra llamados por red
que generan retardos importantes).
ESTADOS POSIBLES EN GIT
Untracked: es la primera vez que aparecen, no están en el repositorio, son cosas nuevas.
Unmodified: no modificado, ya los tenía en mi repositorio y no han sido modificados.
Modified: que se hizo un cambio en un archivo que ya se tenía.
Staged: son cosas que quiero guardar en mi próximo snapshot (quiero que se guarde una foto
de cómo está el archivo en este momento, foto instantánea). Ahí es un commit.
Integridad
Todo en Git es verificado mediante una suma de comprobación (checksum en inglés) antes de
ser almacenado, y es identificado a partir de ese momento mediante dicha suma. Esto
significa que es imposible cambiar los contenidos de cualquier archivo o directorio sin que
Git lo sepa.
El mecanismo que usa Git para generar esta suma de comprobación se conoce como hash
SHA-1. Se trata de una cadena de 40 caracteres hexadecimales (0-9 y a-f), y se calcula en
base a los contenidos del archivo o estructura de directorios. Un hash SHA-1 tiene esta pinta:
Verás estos valores hash por todos lados en Git, ya que los usa con mucha frecuencia. De
hecho, Git guarda todo no por nombre de archivo, sino por el valor hash de sus contenidos.
Vamos a distinguir dos directorios, primero el directorio de git: que es donde almacena los
metadatos y la base de datos de tu proyecto, y segundo el directorio de trabajo que es una
copia de una versión del proyecto en particular. Estos archivos se sacan de la base de datos
comprimida en el directorio de Git, y se colocan en disco para que los puedas usar o
modificar. Los archivos dentro del directorio de trabajo pueden estar en unos de los siguientes
estados:
Estados
Git tiene tres estados principales en los que se pueden encontrar tus archivos:
■ committed: significa que los datos están almacenados de manera segura en tu base de datos
local.
■ modified: significa que has modificado el archivo pero todavía no lo has commiteado a tu
base de
datos.
■ staged: significa que has marcado un archivo modificado en su versión actual para que vaya
en tu
próxima commiteada.
Hay un archivo simple, generalmente contenido en tu directorio de Git, llamado que almacena
información acerca de lo que va a ir en tu próxima confirmación, al contenido de este archivo.
O al archivo mismo se lo conoce como staging area.
Sabiendo esto, el flujo de trabajo básico en Git sería algo así:
■ Modificas una serie de archivos en tu directorio de trabajo.
■ Stageas los archivos, añadiendolos a tu staging area o área de preparación.
■ Commiteas o Confirmas los cambios, lo que toma los archivos tal y como están en el área
de preparación, y almacena esas instantáneas de manera permanente en tu directorio de Git.
----------------------------------------------
GIT Y GITHUB
Comandos básicos
- `git init`: se utiliza para iniciar nuestro repositorio.
- `git add ArchivoEjemplo.js`: crea el archivo pero no lo guarda de forma definitiva, lo
almacena en (Staging Area).
- `git commit -m "versión 1"`: aquí se generan cambios de "Staging Area" y con ( -m "") se
deja un mensaje que nos sea útil.
- `git add .`: Agrega los archivos actualizados al repositorio, pero únicamente en la carpeta
que te encuentras.
- `git commit -m "Cambios v1"`: sirve para generar cambios sobre la versión antigua.
- `git status`: sirve para revisar si has modificado o guardado los cambios hechos.
- `git log "archivo.txt"`: sirve para ver el historial del archivo.
- `git push`: sirve para enviar cambios al repositorio remoto.
- `git pull`: sirve para recibir cambios de repositorio remoto a local.
- **Archivos** ***Tracked***: son los archivos que viven dentro de Git, no tienen cambios
pendientes y sus últimas actualizaciones han sido guardadas en el repositorio gracias a los
comandos git add y git commit.
- **Archivos** ***Staged***: son archivos en staging. Viven dentro de Git y hay registro de
ellos porque han sido afectados por el comando git add, aunque no sus últimos cambios. Git
ya sabe de la existencia de estos últimos cambios, pero todavía no han sido guardados
definitivamente en el repositorio por que falta ejecutar el comando git commit.
- **Archivos** ***Unstaged***: entiéndelos como archivos "Traked pero Unstaged". Son
archivos que viven dentro de Git pero no han sido afectados por el comando git add ni mucho
menos por git commit. Git tiene un registro de estos archivos, pero esta desactualizado, sus
últimas versiones solo estan guardadas en su disco duro.
- **Archivos** ***Untracked***: son archivos que NO viven dentro de Git, solo en el disco
duro. Nunca han sido afectados por git add, asi que Git no tiene registro de su existencia.
Recuerda que hay un caso muy raro donde los archivos tienen dos estados al mismo tiempo:
Staged y Untracked. Esto pasa cuando guardas los cambios de un archivo en el área de
Staging (con el comando git commit), pero antes de hacer commit para guardar los cambios
en el repositorio haces nuevos cambios que todavía no han sido guardados en el área de
Staging (en realidad, todo sigue funcionando igual pero es un poco divertido).
Recuerda que al ejecutar este comando (y de aquí en adelante) vamos a tener una nueva
carpeta llamada **.git** con toda la base de datos con cambios atómicos en nuestro proyecto.
Recuerda que Git está optimizado para trabajar en equipo, por lo tanto, debemos darle un
poco de información sobre nosotros. No debemos hacerlo todas las veces que ejecutamos un
comando, basta con ejecutar solo una vez los siguientes comandos con tu información:
```shell
git config --global user.name "tu nombre"
git config --global user.email "tu@email.com"
```
Existen muchas otras configuraciones de Git que puedes encontrar en el comando git config --
list (o solo git config para ver una explicación más detallada)
Reset y checkout
- `git checkout + Id del commit`: podemos volver a cualquier versión anterior de un archivo
específico o incluso de nuestro proyecto entero. Esta es también es la forma de movernos
entre ramas.
- `git log --stat`: commit descriptivo con cantidad de líneas agregadas y removidas por
archivo.
- `git reset --soft 'commit'`: mantiene los archivos en el área de Staging para que podamos
aplicar nuestros últimos cambios desde un commit anterior.
- `git reset --hard 'commit'`: borra toda la información que tengamos en el área de Staging.
(Perdiendo todo para siempre).
- `git checkout master 'archivo.txt'`: volvemos a la versión madre.
Ramas o branches
Las ramas son la forma de hacer cambios en nuestro proyecto sin afectar el flujo de trabajo de
la rama principal. Esto porque queremos trabajar una parte muy específica de la aplicación o
simplemente experimentar.
La cabecera o head representan la rama y el commit de esa rama donde estamos trabajando.
Por defecto, esta cabecera aparecerá en el último commit de nuestra rama principal. Pero
podemos cambiarlo al crear una rama (git branch rama, git checkout -b rama) o movernos en
el tiempo a cualquier otro commit de cualquier otra rama con los comandos ( git reset id-
commit, git checkout rama-o-id-commit).
```shell
git branch "nombre de rama" // crea una rama
git checkout "nombre de la rama" // cambiarse de rama
```
**NOTA**: Hacer commit antes de cambiar de ramas para no perder los datos.
```shell
git merge "cualquier otra rama"
```
Los archivos con conflictos por el comando git merge entran en un nuevo estado que
conocemos como ***Unmerged***.
Funcionan muy parecido a los archivos en estado ***Unstaged***, algo así como un estado
intermedio entre ***Untracked*** y ***Unstaged***, solo debemos ejecutar `git add` para
pasarlos al área de ***Staging*** y git commit para aplicar los cambios en el repositorio.
Uso de GitHub
Github es una plataforma que nos permite guardar repositorios de git que podemos usar como
servidores remotos y ejecutar algunos comandos de forma visual e interactiva (sin necesidad
de consola de mandos).
Luego de crear nuestra cuenta, podemos crear o importar repositorios, crear organizadores y
proyectos de trabajo, descubrir respositorios de otras personas, contribuir a esos proyectos,
dar estrellas y muchas otras cosas.
El Readme.md es el archivo que veremos por defecto al entrar en un repositorio. Es una muy
buena práctica configurarlo para describir el proyecto, los requerimientos y las instrucciones
que debemos seguir para contribuir correctamente.
Para clonar un repositorio desde GitHub (o cualquier otro servidor remoto) debemos copiar el
URL (por ahora, usando HTTPS) y ejecutar el comando git clone + la URL que acabamos de
copiar. Esto descargara la versión de nuestro proyecto que se encuentra en GitHub.
Sin embargo, esto solo funciona para las personas que quieren empezar a contribuir en el
proyecto. Si queremos conectar el repositorio de GitHub con nuestro repositorio local, el que
creamos con git init, debemos ejecutar las siguientes instrucciones:
A veces hacemos un commit, pero resulta que no queríamos mandarlo porque faltaba algo
más. Utilizamos `git commit --amend`, amend en inglés es remendar y lo que hará es que los
cambios que hicimos nos los agrega al commit anterior.
Git reset es una mala práctica, no deberías usarlo en ningún momento; debe ser nuestro último
recurso.
Si queremos buscar cuántas veces utilizamos un atributo de HTML lo hacemos con **git grep
-c "atributo"**.
----------------------------
Expresiones vs Statements
Podemos decir que todo el código que escribimos en JS o "hace algo" o "retorna algo" (o una
combinación de los dos). En la terminología de lenguajes de programación esta diferencia está
clasificada en la definición de **expressions** (expresiones) y **statements** (sentencias).
> El **operador ternario**, es una expresión o un statement? ej: (numero > 10 ? 'mayor' :
'menor');
Expressions
Cómo dijimos arriba, una *expression* es cualquier pedazo de código **que pueda ser
evaluado a un valor**. Justamente por esto, las vamos a usar en lugares donde JavaScript
*espera un valor*. Por ejemplo, cómo cuando pasamos una expresión como argumento de
una función.
Expresiones Aritméticas
Son las expresiones que resuelven a un valor **numérico**. Por ejemplo:
```js
10;
1 + 10;
2 * 16;
```
Expresiones de Strings
Son expresiones que resuelven a una **string**. Por ejemplo:
```js
'hola';
'hola' + ' como va?';
```
Expresiones lógicas
Son expresiones que resuelven a un valor **booleano**. Por ejemplo:
```js
10 > 9;
11 === 2;
false;
```
Expresiones primarias
Son expresiones que se escriben por sí mismas, y no utilizan ningún operador. Incluyen a
valores literales, uso de variables, y algunos keywords de JS. Por ejemplo:
```js
'hola';
23;
true;
this; // hace referencia al keyword this
numero; // hace referencia a la variable numero
```
Expresiones de asignación
Cuando utilizamos el operador `=` hablamos de un *assigment expression*. Está expresión
retorna el valor asignado. Por ejemplo:
```js
a = 1; // si probamos esto en la consola, vemos que retorna el valor 1.
var c = (a = 2); // vamos a ver que dentro de la variable c, está el valor retornado por la
expresion `a = 2`
```
> Este es un caso muy particular, nótese que esta expresión retornar un valor, **pero a su vez
hace algo**!! Ese algo, es guardar el valor a la derecha del signo `=` en la variable a la
izquierda del signo `=`.
Otra cosa a notar, es que si usamos el keyword `var` la expresión retorna `undefined`, es
decir, no es lo mismo una asignación que una declaración de variables.
mult *= 2;// multiplica mult por dos, asigna ese valor a mult y retorna el valor;
```
Statements (sentencias)
Los *Statements* son instrucciones que le damos al intérprete de JS para que **haga algo**,
ese algo puede ser: crear una variable, ejecutar un bloque de código N veces, ejecutar un
bloque de código o no según una condición de verdad, declarar una función, etc...
Declaration Statements
Este tipo de statements indican al intérprete que declare variables o funciones, se utiliza el
keyword `function` y `var`. Por ejemplo:
```js
var prueba; // declaro la variable prueba
var toni; // declaro la variable toni
function resta(a, b) {
// bloque de código
}
// function expression
array.map(function() {
// código;
});
// el argumento de la función espera una expression
Cómo vemos en el ejemplo de arriba, el intérprete *hace algo*: declara la función. Por lo
tanto es un statement. En cambio, en el segundo ejemplo, estamos haciendo una asignación, y
la asignación espera una *expresión* en la parte de la derecha, asi que le estamos pasando un
function expression.
> Nótese que un function expression puede no tener nombre. Estas son las llamadas
**funciones anónimas**.
Conditional Statements
Estos statements sirven para controlar el flujo de ejecución de código según si se cumple o no
una condición. Por ejemplo:
```js
if (condicion) { // condicion puede ser cualquier expression!!
// ejecuta este bloque si condicion es true
} else if (condicion2) {
// ejecuta este bloque de código si condicion no es true y condicion2 es true
} else {
// ejecuta este bloque de código si condicion y condicion2 no son true.
}
```
// jumps
function () {
// bloque de código
return; // cuando llegue acá, sale de la ejecución de la función y retorna un valor;
// bloque de código
}
> **Esto no funciona en sentido inverso, donde se espera una expresión *NO* podemos
pasar una statement**.