Herramientas de usuario

Herramientas del sitio


informatica:programacion:cursos:programacion_avanzada_javascript

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:cursos:programacion_avanzada_javascript [2024/10/16 08:54] – [Temario] tempwininformatica:programacion:cursos:programacion_avanzada_javascript [2024/11/08 11:53] (actual) – [Evaluación final] tempwin
Línea 13: Línea 13:
 En este completo curso de más de 300 lecciones, dominarás hasta el último detalle de JavaScript, incluyendo las características más recientes del lenguaje. Con él te convertirás sin duda en un mejor profesional de la web. Aprenderás, entre otras muchas cosas: En este completo curso de más de 300 lecciones, dominarás hasta el último detalle de JavaScript, incluyendo las características más recientes del lenguaje. Con él te convertirás sin duda en un mejor profesional de la web. Aprenderás, entre otras muchas cosas:
  
-  * Peligros con el ámbito de las variables.+  * Peligros con el ámbito de las variables, //shadowing// y //hoisting//.
   * Técnicas eficientes de programación orientada a objetos con JavaScript: constructores, prototipos, herencia, encapsulación, polimorfismo, espacios de nombre, interfaces...   * Técnicas eficientes de programación orientada a objetos con JavaScript: constructores, prototipos, herencia, encapsulación, polimorfismo, espacios de nombre, interfaces...
   * Clausuras y otros conceptos importantes.   * Clausuras y otros conceptos importantes.
Línea 65: Línea 65:
   * MÓDULO 12: [[informatica:programacion:cursos:programacion_avanzada_javascript:peticiones_asincronas_api_fetch|Peticiones asíncronas con la API Fetch]]   * MÓDULO 12: [[informatica:programacion:cursos:programacion_avanzada_javascript:peticiones_asincronas_api_fetch|Peticiones asíncronas con la API Fetch]]
   * MÓDULO 13: [[informatica:programacion:cursos:programacion_avanzada_javascript:funciones_asincronas|Funciones asíncronas]]   * MÓDULO 13: [[informatica:programacion:cursos:programacion_avanzada_javascript:funciones_asincronas|Funciones asíncronas]]
-  * MÓDULO 14: Notación de objetos +  * MÓDULO 14: [[informatica:programacion:cursos:programacion_avanzada_javascript:notacion_objetos|Notación de objetos]] 
-  * MÓDULO 15: Símbolos +  * MÓDULO 15: [[informatica:programacion:cursos:programacion_avanzada_javascript:simbolos|Símbolos]] 
-  * MÓDULO 16: Desestructuración +  * MÓDULO 16: [[informatica:programacion:cursos:programacion_avanzada_javascript:desestructuracion|Desestructuración]] 
-  * MÓDULO 17: Nuevas funciones y tipos +  * MÓDULO 17: [[informatica:programacion:cursos:programacion_avanzada_javascript:nuevas_funciones_y_tipos|Nuevas funciones y tipos]] 
-  * MÓDULO 18: Iteradores y generadores +  * MÓDULO 18: [[informatica:programacion:cursos:programacion_avanzada_javascript:iteradores_generadores|Iteradores y generadores]] 
-  * MÓDULO 19: Clases y Programación Orientada a Objetos con ES6+ +  * MÓDULO 19: [[informatica:programacion:cursos:programacion_avanzada_javascript:clases_programacion_orientada_objetos_es6|Clases y Programación Orientada a Objetos con ES6+]] 
-  * MÓDULO 20: Proxies +  * MÓDULO 20: [[informatica:programacion:cursos:programacion_avanzada_javascript:proxies|Proxies]] 
-  * MÓDULO 21: Modularización de código +  * MÓDULO 21: [[informatica:programacion:cursos:programacion_avanzada_javascript:modulos_javascript|Modularización de código]] 
 +  * MÓDULO 22: [[informatica:programacion:cursos:programacion_avanzada_javascript:otras_caracteristicas_ecmascript|Otras características de ECMAScript]]
 ===== Introducción ===== ===== Introducción =====
  
Línea 249: Línea 249:
   * ''getElementsByName''   * ''getElementsByName''
  
 +==== ECMAScript fundamental ====
 +
 +**¿Cuáles son los estados posibles de una promise?** (selecciona las correctas)
 +
 +  * Rechazada (rejected)
 +  * Completada (fulfilled)  (**Correcto**)
 +  * Iniciada (Started)
 +  * Bloqueada (Blocked)
 +  * Con error (Rejected)  (**Correcto**)
 +  * Encolada (Queued)
 +  * Suspendida (Suspended)
 +  * Pendiente (Pending)  (**Correcto**)
 +
 +**¿Qué diferencia hay entre JSON y la notación de objeto? (Marca todas las correctas)** (selecciona las correctas)
 +
 +  * Ninguna. Son lo mismo.
 +  * En JSON los nombres de propiedades van entre comillas. En notación de objeto, no (**Correcto**)
 +  * En JSON las propiedades pueden ser funciones. En notación de objeto, no
 +  * En notación de objeto las propiedades pueden ser funciones. En JSON, no (**Correcto**)
 +  * En notación de objeto los nombres de propiedades van entre comillas. En JSON, no
 +
 +**El método then...** (marca todas las afirmaciones correctas)
 +
 +  * ...se ejecuta en cuanto la promise es completada (**Correcto**)
 +  * ...se ejecuta SIEMPRE en cuanto la promise entra en estado de error
 +  * ...no existe
 +  * ...espera dos parámetros: una promise y una función
 +  * ...espera una función como parámetro (**Correcto**)
 +  * ...devuelve un booleano indicando si la promise se ha completado o no
 +  * ...devuelve una promise (**Correcto**)
 +
 +**Rellena los huecos con las siguientes palabras (sin comillas): "menos", "Map", "más", "objeto literal", "clave", "valor" ** Una de las palabras anteriores es erronea.
 +
 +  * Usar un ''Map'' como una colección ''clave''-''valor'' es ''menos'' eficiente que usar un ''objeto literal'', pero el primero tiene más funcionalidad
 +
 +**Si declaro una variable con const me aseguro de que...**
 +
 +  * Su valor sea immutable
 +  * Su valor sea conocido en tiempo de parsing del fichero
 +  * No pueda contener funciones
 +  * Su valor será seguro un número, una cadena, un booleano o un símbolo
 +  * No se le pueda asignar un nuevo valor (**Correcto**)
 +
 +<WRAP center round info 60%>
 +''const'' solo evita reasignar la variable. ''const'' NO asegura immutabilidad. El siguiente código es válido (y el objeto muta): 
 +
 +<code javascript>
 +const a={v:42}; 
 +a.v = 666; 
 +</code>
 +
 +''const'' NO asegura que el valor sea conocido en tiempo de parsing del fichero: 
 +
 +<code javascript>
 +const a = (function() { 
 +    return math.random();
 +})(); 
 +</code>
 +
 +En este ejemplo DEBE ejecutarse la función anónima para obtener el valor de ''a''
 +
 +''const'' puede contener cualquier tipo de valor. Eso es completamente válido: 
 +
 +<code javascript>
 +const a = function(n) { 
 +    return 'hello ' +n;
 +}
 +</code>
 +</WRAP>
 +
 +==== Evaluación final ====
 +
 +**En el siguiente código**:
 +
 +<code javascript>
 +var saludo = "Hola";
 +function miFuncion() {
 +alert(saludo);
 +saludo = "Adios";
 +}
 +miFuncion();
 +alert(saludo);
 +</code>
 +
 +**¿Qué se muestra por pantalla? ¡Fíjate muy bien en el código y no hagas trampa ejecutándolo ;-)!**
 +
 +  * "Hola" y "Adios" (**Correcto**)
 +  * "Adios" y "Hola"
 +  * "Hola" y "Hola"
 +  * "Adios y "Adios"
 +  * Ninguna de las anteriores 
 +
 +**¿Cómo puedes iterar sobre todos los valores de un array?**
 +
 +  * Usando un bucle ''for'' de 0 hasta ''array.length''
 +  * Usando un bucle ''for'' de 0 hasta ''array.length - 1''  (**Correcto**)
 +  * Usando un bucle ''for'' de 1 hasta ''array.length''
 +  * Usando un bucle ''foreach''
 +  * Usando un bucle ''for-in''
 +  * Usando un bucle ''for-of ''  (**Correcto**)
 +
 +**¿Es posible comprobar varios casos en una sola instrucción case en una estructura de control de flujo de comprobación de casos?**
 +
 +  * Sí, utilizando: ''case 1, 2, 3:''
 +  * Sí, utilizando: ''case 1-3:''
 +  * Sí, utilizando condiciones lógicas, como por ejemplo: ''case (x>=0 || x<=5):''
 +  * No, no es posible, aunque se puede simular con un ''switch(true)'' y luego usando condiciones lógicas, pero posee limitaciones (**Correcto**)
 +  * No, no es posible en JavaScript
 +
 +**¿Cómo recorrerías los elementos de una matriz usando para ello un bucle determinado y accediendo directamente con la variable contador del bucle, por ejemplo ''miMatriz[i]''?**
 +
 +  * ''for(var i= 0; i< miMatriz.length; i++)'' (**Correcto**)
 +  * ''for(var i= 0; i<= miMatriz.length; i++)''
 +  * ''for(var i= 1; i< miMatriz.length; i++)''
 +  * ''for(var i= 1; i<= miMatriz.length; i++)''
 +
 +**¿Puede una variable contener un generador?**
 +
 +  * No. Los generadores son siempre funciones de otros objetos
 +  * Sí, es posible definir un generador como una función sola y guardar dicha función en una variable (**Correcto**)
 +  * No. Aunque se pueden definir generadores como funciones solas, no se pueden guardar en variables
 +
 +**Cuando tienes una función que está trabajando como manejador de un evento, ¿qué referencia contendrá la variable ''this'' al utilizarla desde dentro del manejador?**
 +
 +  * Una referencia al objeto global (window)
 +  * Una referencia al objeto event que representa los datos del evento
 +  * Una referencia al elemento que ha provocado el evento
 +  * Una referencia al elemento que está capturando el evento, el cual no tiene que coincidir con el que lo ha provocado (**Correcto**)
 +
 +**El método ''sort'' de las matrices sirve para:**
 +
 +  * Ordenar de menor a mayor los elementos de una matriz
 +  * Ordenar de mayor a menor los elementos de una matriz
 +  * Ordenar de cualquier manera que deseemos los elementos de una matriz, usando para ello una función auxiliar que define cómo es la ordenación y que se pasa como parámetro (**Correcto**)
 +  * Este método no existe
 +
 +**¿Qué métodos se utilizan para insertar y quitar elementos del principio de una matriz, creando en la práctica una pila FIFO o cola?**
 +
 +  * ''push'' y ''pull''
 +  * ''push'' y ''pop''
 +  * ''slice'' y ''splice''
 +  * ''unshift'' y ''shift'' (**Correcto**)
 +
 +**Has creado un proxy ''p'', sobre un objeto ''obj''. Dicho proxy intercepta las llamadas a propiedades.
 +
 +Tienes una función ''f'', que recibe el objeto por parámetro y que llama a una propiedad ''prop'' del objeto, pero el proxy no intercepta nada.
 +
 +¿Qué puede estar pasando?**
 +
 +  * Que a la función ''f'' le has pasado el objeto ''obj'' en lugar del proxy ''p'' como parámetro (**Correcto**)
 +  * Que el proxy no se ha inicializado
 +  * Las propiedades no pueden interceptarse, solo se pueden interceptar los métodos 
 +
 +**¿Cómo podrías conseguir que un código se ejecutase a intervalos regulares de tiempo, entre ejecuciones completas, con toda certeza y sin que se pierdan o se retrasen ejecuciones, incluso aunque estos intervalos fuesen cortos y el proceso largo?**
 +
 +  * Simplemente usando ''setInterval'', que está diseñado para eso
 +  * Utilizando ''setTimeout'' y estableciendo un nuevo ''setTimeout'' al final del código que se ejecuta (**Correcto**)
 +  * No es posible conseguir esto en casos extremos debido a que JavaScript se ejecuta siempre en un solo hilo y no tiene paralelismo
  
informatica/programacion/cursos/programacion_avanzada_javascript.1729061685.txt.gz · Última modificación: por tempwin