Javascript Basico
Javascript Basico
Javascript Basico
#Platzi/javascript_basico
## ¿Que es javascript?
*¿Qué es JavaScript?*
JavaScript es un lenguaje de programación dinámico que tiene la capacidad de ser
utilizado en muchos dispositivos diferentes. Puede usarse en ordenadores personales,
servidores web y teléfonos inteligentes. Es un lenguaje interpretado, orientado a objetos,
débilmente tipado y dinámico.
JavaScript se emplea comúnmente para el desarrollo web front-end y más recientemente
para algunos desarrollos back-end a través de frameworks como Node.Js. o Next.Js. Tiene
características como la programación orientada a objetos, funciones y herencia basada en
prototipos.
*¿Cómo nace Javascript?*
Nace con la necesidad de generar dinamismo en las páginas web y que a su vez los
usuarios y las empresas pudieran interactuar unos con otros. Fue creado por Brendan Eich
en 1995 y se convirtió en un estándar oficial del World Wide Web Consortium (W3C) en
1997.
*¿Por qué decimos que Javascript es un lenguaje dinámico?*
Corre directamente en la etapa de Runtime, sin una etapa de compilación previa. Esto
permite probar nuestro código inmediatamente; pero también es lo que hace que los
errores no se muestren sino hasta que se ejecuta el programa. Lo que se ve a primera
vista, cuando se analiza el código, es muy probable que no sea lo que se va a obtener
cuando el programa se ejecute.
JavaScript permite declarar (por ejemplo) variables cuyo valor (y tipo) solo se conocerá al
momento de su ejecución en función de las condiciones dadas al momento de correrlo en
un entorno real. En cambio, los lenguajes estáticos no compilarán en código ejecutable a
menos que todos los valores (o tipos de valores) se conozcan por adelantado.
*¿Por qué es débilmente tipado?*
Porque los tipos de datos no están bien definidos en el lenguaje y permite, por ejemplo,
operaciones entre numerosos y letras. Esto sucede porque el lenguaje asume tipos de
datos que no necesariamente fueron los que se querían representar. Se pueden hacer
operaciones entre tipos distintos de datos (enteros con strings, booleanos con enteros,
etc.). Ejemplo:
```javascript
4 + “7”; // 47
4 * “7”; // 28
2 + true; // 3
false - 3; // -3
```
*¿Realmente es Javascript un lenguaje interpretado?*
Sí, y la razón es que el navegador lee línea por línea nuestro código, el cual le indica lo que
tiene que ir haciendo, sin la necesidad de compilar. Todo esto es controlado por el motor
de Javascript V8 del navegador.
Just in Time Compiler, traduce nuestro código en código máquina que puede entender la
computadora. (Byte Code)
## 2. ¿Porque JavaScript?
A final del 2019 la W3C subió como lenguaje de programación a Web Assembly que sirve
para hacer productos web.
## 5. Funciones en Javascript
Son un conjunto de sentencias que nosotros podemos utilizar para generar ciertas
acciones con los valores que ya guardamos antes en las variables.
Tenemos dos tipos de funciones
* Declarativas: va a inicializar un valor y lo guardamos en memoria.
* Expresión (también conocidas como funciones anónimas): vamos a crear una
variable donde guardamos la función en memoria.
Las funciones también necesitan parámetros que estoy esperando recibir como
valor para que la función pueda hacer algo.
* Parámetros de la función: nos ayudan a generar cálculos o resultados de la
función.
saludar('Diego');
```
Expresión de función:
En la expresión de función, la declaración se inicia con la palabra reservada var, donde se
generará una variable que guardará una función anónima.
``` javascript
var nombre = function(nombre){
console.log(`Hola ${nombre}`)
}
nombre(‘Diego’);
```
En la expresión de función, la función podría o no llevar nombre, aunque es más común
que se hagan anónimas.
Diferencias:
A las funciones declarativas se les aplica hoisting, y a la expresión de función, no. Ya que el
hoisting solo se aplica en las palabras reservadas var y function.
Lo que quiere decir que con las funciones declarativas, podemos mandar llamar la función
antes de que ésta sea declarada, y con la expresión de función, no, tendríamos que
declararla primero, y después mandarla llamar.
## Scope
Hay 2 tipos:
* Global
* Local
* Block Scope
* Function Scope
## 8. Hoisting
El concepto de Hoisting fue pensado como una manera general de referirse a cómo
funcionan los contextos de ejecución en JavaScript (específicamente las fases de creación
y ejecución). Sin embargo, el concepto puede ser un poco confuso al principio.
Conceptualmente, por ejemplo, una estricta definición de hoisting sugiere que las
declaraciones de variables y funciones son físicamente movidas al comienzo del código,
pero esto no es lo que ocurre en realidad. Lo que sucede es que las declaraciones de
variables y funciones son asignadas en memoria durante la fase de _compilación,_ pero
quedan exactamente en dónde las has escrito en el código.
## 9. Coerción
Coerción es la forma en la que podemos cambiar un tipo de valor a otro, existen dos tipos
de coerción:
Coerción implícita = es cuando el lenguaje nos ayuda a cambiar el tipo de valor.
Coerción explicita = es cuando obligamos a que cambie el tipo de valor.
```
## 14. Arrays
Un Array es un tipo de estructura de datos, objeto. Puede guardar datos distintos dentro,
guarda los datos en forma de lista.
::.lenght:: devuelve la longitud del array.
::.push():: agrega elementos al final de array.
::.pop():: elimina un elemento del array.
::.unshift():: agrega un elemento al array, pero lo agrega en primer lugar.
::.shift():: elimina el elemento que está en el inicio del array.
::.indexOf():: devuelve la posición de un elemento del array.
```javascript
var estudiantes = ["Maria", "Sergio", "Rosa", "Daniel"];
function saludarEstudiantes(alumno) {
console.log(`Hola, ${alumno}`);
}
for(var alumno of estudiantes) {
saludarEstudiantes(alumno);
}
//SALIDA
Hola, Maria
Hola, Sergio
Hola, Rosa
Hola, Daniel
```
function saludarEstudiante(estudiante) {
console.log(`Hola ${estudiante}`);
}
var i = 0;
//do-while
do {
saludarEstudiante(estudiantes[i]);
i++;
} while (i < estudiantes.length)
//while
while (estudiantes.length > 0) {
var estudiante = estudiantes.shift();
saludarEstudiante(estudiante);
}
```
## 17. Objects
```javascript
var miAuto = {
marca: "Toyota",
modelo: "Corolla",
año: 2020,
detallesDelAuto: function () {
console.log(`Auto ${this.modelo} ${this.año}`);
}
```
//Paso 4: Creamos una función para que el usuario agregue un nuevo carro con sus
parámetros
function registrarAutoNuevo(){
var marca = prompt("Ingresa la marca: ");
var modelo = prompt("Ingresa el modelo: ");
var anio = prompt("Ingresa el año: ");
agregarAuto(marca, modelo, anio);
console.log("¡Agregaste tu nuevo carro con éxito!");
};
//Paso 5: Mostramos el arreglo actualizado
listaAutos;
```
// Método Filter
var articulosFiltrados = articulos.filter(function(articulo) {
return articulo.precio <= 500;
});
// Método Map
var nombreArticulos = articulos.map(function(articulo) {
return articulo.nombre;
});
articulosFiltrados;
// (2) [{…}, {…}]
// 0: {nombre: "⌨", precio: 100}
// 1: {nombre: "🖱", precio: 70}
```javascript
var articulos = [
{ nombre: "Bici", costo: 3000 },
{ nombre: "TV", costo: 2500 },
{ nombre: "Libro", costo: 320 },
{ nombre: "Celular", costo: 10000 },
{ nombre: "Laptop", costo: 20000 },
{ nombre: "Teclado", costo: 500 },
{ nombre: "Audifonos", costo: 1700 },
];
//map Ayuda a mapear ciertos elementos de los articulos, es necesario generar nuevo
array
var nombreArticulos = articulos.map(function(articulo){
return articulo.nombre;
});