====== JavaScript ====== Lenguaje de programación interpretado. * [[https://developer.mozilla.org/es/docs/Web/JavaScript|Web oficial]] ===== Secciones ===== * [[informatica:programacion:javascript:variables_constantes|JavaScript: variables y constantes]] * [[informatica:programacion:javascript:tipos_de_datos|Tipos de datos]] * [[informatica:programacion:javascript:incluir_javascript|Incluir código JavaScript en una web]] * [[informatica:programacion:javascript:estructuras_control|Estructuras de control]] ===== Variables ===== Antiguamente se utilizaba la palabra reservada ''var''. Aunque se pueda seguir utilizando, lo recomendable es utilizar ''let'' para la creación de variables: let nombre = "Pepito"; ''var'' crea variables de ámbito global. Cualquier variable o constante que no tiene un valor por defecto es //undefined//. ===== Cadenas ===== ==== Template strings ==== Cuando queremos concatenar strings, podemos utilizar el operador de concatenación (''+'') o emplear las //template strings// que se encierran entre acentos graves (''`'') y las variables se encierran entre ''${}'': let nombre = "Pepito"; let apellidos = "Grillo"; console.log(`${nombre} ${apellidos}`); // Salida: "Pepito Grillo" Los //template strings// también permiten strings multilínea: const html = `

Hola

Este es otro párrafo

`;
===== Constantes ===== Se utilizan cuando queremos definir valores que no se modificarán a lo largo de la ejecución del programa. Se declaran con la palabra reservada ''const'': const nombre = "Pepito"; ===== Destructuring ===== ==== Objetos ==== Partimos de un objeto literal: const persona = { nombre: "Pepito", apellido: "Grillo", edad: 109, getNombre: function() { return `${this.nombre} ${this.apellido}`; } } Si queremos extraer las propiedades del objeto: const {nombre, apellidos, edad} = persona; console.log(nombre, apellidos, edad); Gracias a esta característica de "desestructuración" nos ahorramos tener que hacer lo siguiente: const nombre = persona.nombre; const apellidos = persona.apellidos; const edad = persona.edad; console.log(nombre, apellidos, edad); También podemos desestructurar el objeto dentro de una función: function imprimePersona({nombre, apellidos, edad}) { console.log(nombre, apellidos, edad); } imprimePersona(persona); ==== Arrays ==== const personas = [ "Pepito", "Fulanito", "Menganito" ]; const [p1, p2, p3] = personas; console.log(p1, p2, p3); // Pepito, Fulanito, Menganito Si solo quisiésemos coger el último: const [, , p3] = personas; console.log(p3); // Menganito ===== Funciones de flecha ===== Declaración típica de una función: function sumar(a, b) { return a + b; } console.log(sumar(5,2)); // 7 Transformación a una **función de flecha**: const sumar = (a, b) => { return a + b; } Para este ejemplo, como la función tiene solo una línea y esa línea es el ''return'', se podría resumir de la siguiente manera: const sumar = (a, b) => a + b; ===== Callback ===== Una función de //callback// es una función que se pasa a otra función como un argumento, que luego se invoca dentro de la función externa para completar algún tipo de rutina o acción. La función ''setTimeout'' admite un callback como argumento: setTimeout(function() { console.log("Hola, mundo"); }, 1000); Un ejemplo más complejo: const getUsuarioByID = (id, callback) => { const user = { id: id, nombre: "Pepito" } setTimeout( () => { callback(user) }, 1500) } getUsuarioByID(10, (usuario) => { console.log(usuario); }); ===== Consola ===== ==== Limpiar ==== console.clear(); ==== Escribir ==== console.log("Hola, mundo!"); ===== Frameworks ===== * [[informatica:programacion:javascript:vue.js|Vue.js]] * [[https://angular.io/|Angular]] * [[https://reactjs.org/|React]] ===== Recursos ===== * [[https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_scroll_to_top|Botón de volver al inicio]] * [[https://www.tutorialrepublic.com/faq/how-to-determine-if-variable-is-undefined-or-null-in-javascript.php|Cómo determinar si una variables es undefined o null]] * [[https://exploringjs.com/impatient-js/index.html|JavaScript for impatient programmers (ES2021 edition)]] * [[https://www.w3schools.com/js/default.asp|JavaScript Tutorial]] (W3Schools) * [[https://kbpsystem777.github.io/You-Dont-Know-JS/|You Don’t Know JS (book series)]] ==== Libros ==== * [[https://nostarch.com/ejs3|Eloquent JavaScript]], de Marijn Haverbeke. Tiene [[https://eloquentjavascript.net/|versión online]] (gratuita). * [[https://www.oreilly.com/library/view/javascript-the-definitive/9781491952016/|JavaScript: The Definitive Guide]], de David Flanagan * [[https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/README.md|You don't know JS]], de Kyle Simpson * [[https://github.com/getify/You-Dont-Know-JS|You don't know JS yet]], de Kyle Simpson.