![]() |
Created by Mariela Torres Badillo
almost 5 years ago
|
|
Question | Answer |
¿Cuántos tipos de datos primitivos existen? | En JavaScript existen seis (6) tipos de datos primitivos: number (número). string (cadena). boolean (booleano). undefined (indefinido). null (nulo). symbol (ES6) |
¿Cuáles son los valores del tipo }"number" | Son valores numéricos(pedazos de data que representan información numérica). Incluye números positivos, negativos, enteros y decimales. Tiene tres valores simbólicos: +Infinity, -Infinity y NaN |
¿Cuáles son los valores del tipo string? | Es el tipo de dato que utilzamos para representar texto. Se declaran al poner el contenido entre comillas. |
¿Cuáles son los valores de tipo boolean? | Son los que tiene solo dos valores: true (verdadero) y false (falso). |
¿Que retorna la siguiente expresión: NaN == NaN? | false NaN representa el resultado de un cálculo sin sentido y como tal no es igual al resultado de cualquier otro cálculo sin sentido |
¿Cuál es la diferencia entre null y undefined? | Ambos valores denotan la ausencia de un valor, pero en un caso podríamos decir que es intencional (null) y en el otro no (undefined). El valor undefined significa que no se ha asignado un valor, a diferencia de null, que significa que hemos asignado el valor null. Esto puede ser muy útil para diferenciar estados en operaciones asíncronas, ... es común que undefined signifique que la operación no ha completado aún, mientras que null significa que completó pero retornó un valor nulo. |
¿Al convertir numbers y strings a booleans cuales cuentan como false y cuales como true? | 0, NaN y la cadena vacía ("") cuentan como false, Todos los demás valores cuentan como true. |
¿Cuál es el algoritmo de "=="? | Cuando se evalúan dos valores con este operador, se sigue la secuencia a continuación para determinar el resultado: Si son del mismo tipo, entonces, se prueban con ===. Si son de diferente tipo. Si uno es null y otro undefined, retorna true. Si uno es string y otro number, se convierte el string, y se evalúan como números. Si uno es booleano, se transforma, true en 1 y false en 0, y se evalúan. Si uno es un object y otro un number o string, convierte el objeto a primitivo. En otros casos, devuelve false. |
¿Cuáles son las 4 reglas para nombrar variables? | Los nombres de variables: No pueden incluir espacios No pueden ser palabras reservadas (o keywords) No pueden comenzar con números (solo no al comienzo) No pueden contener signos de puntuación, con la excepción de los signos $ y _ |
¿Qué es el scope? | El scope de una variable son las ubicaciones desde donde puede ser accedida. |
¿Qué significa que las variables en JS son "lexically scoped"(de ámbito léxico)? | Significa que las variables declaradas dentro de un ámbito (una función, o un bloque indicado por los caracteres {} en el caso de let y const), no son visibles fuera de ese ámbito. "la estructura estática de un programa determina el ámbito de la variable (no es influenciada por dónde se invoca la función)" |
¿Qué son los nested scopes? | Son ámbitos anidados. Si el ámbito está anidado dentro del ámbito directo de una variable, la variable será accesible en todos los ámbitos.Tiene dos: El ámbito externo (outer scope) y ámbito interno (inner scope) |
¿A qué se refiere el shadowing o sombra? | Si un scope declara una variable que tiene el mismo nombre que otra en un scope interno de una función, el acceso a la variable externa es bloqueado en el scope interno y todos los scopes anidados dentro de ella. Cambios a la variable interna no afecta a la variable externa, la cual es accesible nuevamente cuando el scope interno es dejado. |
¿Cuál es la diferencia entre contexto y alcance? | Cada invocación de función tiene tanto un alcance como un contexto asociados a ella. El alcance es un concepto asociado a funciones mientras que el contexto está asociado a objetos. En otras palabras, el alcance se refiere a la accesibilidad de variables de una función cuando es invocada y es único a cada invocación. El contexto es siempre el valor de this cuya referencia es siempre el objeto que está ejecutando el código. |
¿Cuáles son los alcances con los que pueden ser declaradas las variables? | Las variables pueden ser declaradas con alcance local o alcance global, lo cual establece su accesibilidad desde diferentes alcances en tiempo de ejecución. |
¿Qué es una variable global? | Cualquier variable definida como global será accesible en tiempo de ejecución por cualquier alcance, ya que se habrá declarado fuera del cuerpo de una función. |
¿Cuál es el alcance de una variable local? | Las variables locales existen solamente dentro del cuerpo de una función o bloque. El alcance local de una variable solo se define a partir del cuerpo de la función o bloque que la contiene. |
¿Cuáles son las características de una variable declarada con "let"? | La sentencia let declara una variable de alcance local, la cual, opcionalmente, puede ser inicializada con algún valor y permite ser reasignada (a diferencia de const). El alcance de let es local al bloque, declaración o expresión donde se está usando. Lo anterior diferencia la expresión let de la palabra reservada var, la cual define una variable global o local en una función sin importar el ámbito del bloque. |
¿Cuáles son las características de una variable declarada con "const"? " | Son variables de solo lectura son otra de las novedades de ECMAScript 6. Cualquier variable declarada como constante no podrá ser reasignada. |
¿Qué es una sentencia? | Una sentencia JavaScript es el equivalente a una oración en un leguaje humano. Entendemos, por lo tanto, que un programa en JavaScript es una lista de "sentencias JavaScript"; es decir, un conjunto de oraciones que le dicen al computador qué hacer. |
¿Qué es un bloque de código? | Cuando necesitamos ejecutar múltiples sentencias, podemos encerrarlas en llaves ({ y }). Las llaves agrupan las sentencias, haciéndolos valer por una sola. Una secuencia de sentencias encerradas en llaves es llamada un bloque (de código). |
¿Que son los bucles? | Es otra forma de modificar el flujo de un programa ("loops" en inglés). Los bucles, permiten ejecutar un código varias veces, dependiendo de si una condición sigue siendo verdadera. El control de flujo por bucles nos permite regresar a cierto punto en el programa en el que estuvimos antes y repetirlo con nuestro estado actual, tal como lo describe el siguiente diagrama: |
¿Cómo es el bulce "whileW? | "Sigue haciendo esto mientras esta condición sea verdadera. Detente cuando la condición se vuelva falsa." while (condition) { // statement } Ejecuta statement tantas veces como la condición se cumpla. |
¿Cómo es el bucle "do"? | Ejecuta los statements al menos una vez y luego tantas veces como se cumpla la condición. do { // statements } while (condition); |
¿Cómo es un bucle for? | init es ejecuta una vez antes que inicie el ciclo, que ejecuta statements tantas veces como condition sea true. Puedes usar let para declarar variables, pero el scope de dicha variable solo será dentro del cliclo. post_iteration se ejecuta luego de cada iteración. for ([init]; [condition]; [post_iteration]) { // statements } |
¿Qué es un label? | Un label(etiqueta) es un identificador seguido por :. Al inicio de un ciclo, un label te permite hacer break o continue incluso si está dentro anidado de otro ciclo anidado. Cuando está al inicio de un bloque, te permite salir del mismo con la sentencia break. En ambos casos, el nombre del label se convierte en un argumento de break o continu |
¿Qué hacen break y continue en los ciclos? | Los siguientes mecanismos pueden ser usados con ciclos: break [label] Sale de un ciclo. continue [label] Detiene la iteración actual e inmediatamente ejecuta la siguiente. |
¿Qué es un label? | Un label(etiqueta) es un identificador seguido por :. Al inicio de un ciclo, un label te permite hacer break o continue incluso si está dentro anidado de otro ciclo anidado. Cuando está al inicio de un bloque, te permite salir del mismo con la sentencia break. En ambos casos, el nombre del label se convierte en un argumento de break o continue |
¿Qué significa DRY? | "Don't Repeat Yourself".En español significa "no te repitas". Si estás copiando y pegando pedazos de código, o si tienes sentencias de código similares a lo largo de tu programa, significa que te estás repitiendo |
¿Qué es una función? | Una función es una forma de agrupar código para que pueda ser reutilizado. Las funciones nos permiten ejecutar la misma pieza de código en varios lugares de un programa sin tener que copiar y pegar el código repetidamente. Dicho de otra manera, una función es un pedazo de programa envuelto en un valor. |
¿Cómo se crea una función? | Una función es creada por una expresión que empieza con el keyword function, o alternativamente usando la síntaxis de función flecha. |
¿Cómo esta formada una función? | Las funciones tienen un conjunto de parámetros (en el ejemplo anterior solo tenemos un parámetro: num) y un cuerpo, que contiene las sentencias a ser ejecutadas. |
¿Para qué sirven los parámetro? | Los parámetros sirven para "pasarle" valores a la función y por ende, cambiar su comportamiento según los valores brindados. |
¿El cuerpo de la función debe estar encerrado entre llaves? | Cuando declaramos una función usando el keyword function el cuerpo de la función tiene que estar siempre encerrado en llaves, incluso cuando consista de una sola instrucción (como en el ejemplo previo), mientras que en las funciones flecha podemos hacer retorno implícito cuando el cuerpo consta de solo una expresión (que será implícitamente el valor de retorno). |
¿Cómo ejecuto una función? | Para correr el código dentro de una función, necesitamos "invocar, llamar, o aplicar" la función. Esto se hace escribiendo el nombre de la función inmediatamente seguido por unos paréntesis (). Dentro de los paréntesis se incluye lo que le quieres "pasar" a la función para usar como parámetro. |
¿Cuáles son los argumentos de una función? | Los valores que se pasan a la función para usar como parámetros son llamados argumentos. Son los valores de entrada |
¿Qué es el valor de retorno de una función? | El valor de retorno es el valor de salida (output) que devuelve la función y que puede ser utilizado en cualquier lugar del programa. |
¿Cómo se especifica el valor de retorno de una función? | El valor de retorno se especifica con el keyword "return" En las funciones flecha podemos hacer retorno implícito cuando el cuerpo consta de solo una expresión (que será implícitamente el valor de retorno). Si una función no especifica el valor de retorno, entonces, la función retorna undefined. |
¿Qué pasa cuando el interprete JS se topa con la palabra return? | Cuando el intérprete JavaScript se topa con un return dentro de una función, inmediatamente salta fuera de la función actual y pasa el valor retornado al código que la llamó. Es decir, cualquier sentencia que coloquemos después del return en una función, no será ejecutada. |
¿Qué estructuras de control de flujo existen en JS? | -Condicionales -Ciclos o bucles -Funciones |
¿Cómo afectan las funciones el control de flujo de nuestro programa? | Con funciones podemos crear estructuras repetitivas (con algo que se llama recursividad) y estructuras condicionales (con, por ejemplo, múltiples valores de return). |
¿Qué significa DRY? | Don't Repeat Yourself (DRY): Es muy común que a lo largo del desarrollo de una solución nos encontremos con un patrón que se va repitiendo a lo largo de nuestro código. Una vez identificado un patrón, es tiempo de escribir una función, objeto o módulo que encapsule dicho patrón para que sea fácilmente reusable. Esto ayuda también a que si encontramos algún bug o quisiéramos agregar funcionalidad, solo se tendría que hacer en un lugar. Además, escribiendo una función reusable te obliga a aislar el patrón del problema, lo cual ayuda a tener funcionalidad relacionada de manera agrupada. |
¿Qué significa DOT? | Do One Thing (DOT): Cada función debe hacer solo una cosa y hacerlo lo mejor posible. Siguiendo este principio hará tu función más reusable, legible y fácil de depura |
¿Qué significa KISS? | Keep It Simple Stupid (KISS): Si bien las funciones deben de hacer solo una cosa, es mejor hacerlo súper claro manteniendo la sencillez y no agregando complejidad innecesaria para llevar a cabo una solución. Esto no quiere decir que la solución no sea óptima, sino que pueda ser legible para poder mantenerla a lo largo del tiempo. |
¿Qué significa "Less is more"? | Less Is More: Para alcanzar la mayor legibilidad posible y reducir la tentación de hacer más de una cosa, las funciones deben ser tan cortas como sea posible. Si la función se vuelve muy extensa, es bueno considerar separarlo en subtareas y datos a lo largo de funciones y objetos. |
¿Qué es la definición de una función? | Es la definición de una variable regular donde el valor dado a dicha variable resulta ser una función. |
¿Qué es una función declaración (function declaration)? | Es una manera de definir una función P.ej: function id(x) { return x; } |
¿Cuáles son los 3 roles de funciones en JS? | Son: 1. Nonmethod function (función normal) 2. Constructor 3. Método |
¿Cuál es el rol de función normal (nonmethod function)? | Puedes llamar a una función directamente. P.ej: id('hello'); Por convención, los nombres de estas funciones normales empiezan con minúscula siguiendo el estilo lowerCamelCase. |
¿Cuál es el rol constructor? | Puedes invocar una función a través del operador new. Es usado para la creación de objetos. Aquí un ejemplo de invocación: new Date(); Por convención, los nombres de los constructores empiezan con mayúscula, siguiendo el estilo UpperCamelCase. |
¿Cuál es el rol de "método? | Puedes almacenar una función en una propiedad de un objeto, lo que lo convierte en un método. P.ej: obj.method(); Por convención, los nombres de los métodos siguen el estilo de las funciones normales (lowerCamelCase). |
¿Cuál es la diferencia entre "parámetro" y "argumento"? | Parámetros son usados para definir una función.P.ej: function foo(param1, param2) { // ... } Argumentos son usados para invocar una función.P. ej: foo(3, 7); |
¿De qué maneras se puede crear una función? (3) | 1. Function expression (función como expresión) 2. Function delcaration (declaración de una función) 3. Mediante el constructor: Function() |
¿De dónde obtienen las funciones su métodos? | Las funciones obtienen sus métodos de: Function.prototype. |
Las funciones son objetos ¿Verdadero o falso? | Verdadero. Todas las funciones son objetos, instancias de Function. , |
¿Qué es una función expresió ? | Un function expression produce un valor. const add = function (x, y) { return x + y; }; console.log(add(2, 3)); // => 5 En este tipo de función se puede asignar una función a una variable, pasar como parámetro de otra función y más. |
¿Que es una función anónima o anonymous function expressions? | Es una función expresión que no tiene nombre |
¿Qué es una "Named Function Expressions" o funciones como expresión con nombre? | Se puede poner nombre a una función como expresión. Los named function expressions permiten a la función poder referirse a si misma, su utilidad se ve reflejada cuando se desea aplicar recursividad Nota: Los nombres de las funciones como expresión con nombre solo son accesibles dentro de la función |
¿Cómo se compone una función declaración? | Consiste de: - La palabra clave reservada function -Una lista de parámetros para la función, encerrados en paréntesis y separados por comas -La sentencia JavaScript que define la función, encerrada por llaves. |
¿Qué es una function constructor? | El constructor Function() evalua código JavaScript almacenado en strings.P.ej: const add = new Function('x', 'y', 'return x + y'); Esta forma de definir una función es lenta y deja código en strings (inaccesible a herramientas, por ejemplo, al depurar con Dev Tools) |
¿Qué es el hoisting? | Hoisting significa "mover al inicio del ámbito" El motor de JavaScript mueve esto al inicio del scope: Function declarations son elevadas (hoisted) completamente Declaraciones de variables solo parcialmente (pero solo las declaraciones más no las asignaciones) |
¿Por qué las funciones flecha no pueden llamarse con "new"? | Al no tener un método constructor, no pueden ser utilizadas como constructores. Las funciones flecha lanzarán un error cuando se utilicen con new. |
¿Existe la propiedad "prototype" en una función flecha? ¿por qué? | Al no disponer de constructor, tampoco es necesario un prototipo. Por lo tanto, no existirá la propiedad prototype en una función flecha. |
¿Las funciones flecha crean un nuevo contexto? ¿qué consecuencias tiene? | No crean un nuevo contexto. El valor de this, super, arguments y new.target dentro de la función será el mismo que el de la función tradicional (non-arrow) más cercana. |
¿Puedes cambiar "this" en una función flecha? | No. El valor de this dentro de la función flecha permanece inmutable a lo largo de todo el ciclo de vida de la función. Al no crear un nuevo contexto, this siempre vendrá determinado por la función que lo contiene: |
¿Cómo le proporcionas parámetros a una función flecha? | Mediante parámetros nombrados y rest parameters. No hay objeto arguments |
¿Es posible duplicar parámetros con el mismo nombre? | No es posible duplicar parámetros con el mismo nombre: Tanto en modo estricto como no estricto, a diferencia de las funciones clásicas, que no lo permiten tan solo en modo estricto. |
¿Qué es un array? | Un tipo de dato específico para almacenar secuencias de valores. Se llama array (arreglo en español) y se escribe como una lista de valores entre corchetes, separados por comas. listOfNumbers = [2, 3, 5, 7, 11]; |
¿De dónde heredan sus métodos y propiedades los arreglos? | Todo arreglo en JavaScript es una instancia del constructor Array, y por tanto hereda todos los métodos y propiedades definidas en Array.prototype. |
¿Qué hace el método "Array.prototype.push? | El método Array.prototype.push recibe un valor, lo agrega al final del arreglo sobre el que se invocó y retorna la nueva longitud del arreglo. |
¿Qué hace el método: "Array.prototype.pop"? | Éste método no recibe ningún argumento, simplemente extrae el último elemento del arreglo y lo retorna (modificando el arreglo directamente - in place). |
¿Qué hace el método: "Array.prototype.slice"? | Array.prototype.slice crea un nuevo arreglo con una copia superficial (shallow copy) de una porción del arreglo obre el cual se invoca. Recibe dos argumentos, begin y end, que indican que porción del arreglo queremos copiar. begin es el índice a partir del cual queremos empezar a copiar, y end hasta donde copiar (sin incluir el elemento con índice end). El arreglo original no se ve modificado. |
¿Qué hace el método: "Array.prototype.indexOf"? | El método indexOf() recibe un valor, y devuelve el índice que contenga ese valor si lo encuentra, si no devuelve -1. Este método se usa de forma muy común para comprobar si un arreglo contiene un determinado valor. |
Menciona algunos 'ejemplos de métodos para agregar y quitar elementos | push, pop, shift, unshift, slice, splice y concat. |
Menciona ejemplos de métodos de arreglos para buscar elementos dentro de un array | indexOf, lastIndexOf, includes, find, findIndex y filter. |
Menciona ejemplos de métodos de arrays para transformar el array | para transformar el array: map,reduce, sort, reverse, split y join. |
¿Que hace el método: "Array.prototype.filter"? | filter nos permite obtener un subconjunto de los elementos del array, que cumplan con cierta condición |
¿Qué hace el método "Array.prototype.map"? | map nos permite visitar cada uno de los elementos del array, recolectando en el proceso, un valor de retorno para cada elemento visitado |
¿Qué hace el método: "Array.prototype.sort"? | Ordena el array in place. Por defecto sort ordena el array, convirtiendo a todos los elementos en Strings, |
¿Qué hace el método: "Array.prototype.reduce"? | reduce es similar a map, pero lo usamos para iterar un array y obtener un único valor que contenga un consolidado de todos los elementos. |
¿Qué hace el método: "forEach"? | Cuando queremos iterar un array, usamos forEach. |
¿Qué hace el método reduceRight? | educeRight hace lo mismo que reduce, pero comenzando por el final del array. |
¿Cuáles son las dos principales diferencias entre arrays y objetos? | Como hemos visto, para acceder a información dentro de un array utilizamos un número correspondiente al index; es decir, la posición en la que se ubica el valor. Los objects, por su parte, utilizan strings en lugar de números para acceder a los diferentes elementos. Estos strings se denominan keys (llaves) o propiedades, y los elementos a los que apuntan son llamados valores. Juntas, estas piezas de información se llaman pares key-value. Dado que en los arrays se requiere del index para acceder a la información, es importante mantener un determinado orden de los valores. En el caso de los objects los pares key-value de información pueden estar en cualquier orden. |
¿Los keys en los objetos llevan o no comillas? | Los keys son strings. No es necesario colocar los keys entre comillas porque Javascript sabe que los keys son strings. Sin embargo, es también válido colocar los keys entre comillas. Si no colocamos las comillas, los keys deben seguir las mismas reglas de nombramiento de variables. Por ejemplo, no deben tener espacios. Pero si colocamos los keys entre comillas, entonces sí podemos usar el nombre que queramos. |
¿Cómo accedes a los valores de un objeto? | Podemos acceder a los valores de un object de dos maneras: La primera es usando los corchetes [], tal como lo hacemos para los arrays. La única diferencia es que, en lugar de usar el index (un number), utilizamos el key (un string), siempre entre comillas. La segunda es usando el punto (.) con el nombre del key inmediatamente después, sin comillas. A esto se le llama dot notation. Al igual que en la declaración de los keys, si utilizamos dot notation, el key debe obligatoriamente cumplir con las reglas de nombres válidos (por ejemplo, no deben contener espacios). |
¿De dónde heredan sus propiedades todos los objetos de JS? | Todos los objetos en JavaScript provienen de Object, es decir que todos heredan los métodos y propiedades de Object.prototype, es decir que alterando este objeto, puedes alterar el comportamiento de todos los objetos. |
¿Qué significa que JavaScript es un lenguaje de tipado débil o dinámico | Esto significa que no es necesario declarar el tipo de variable antes de usarla. El tipo será determinado automáticamente cuando el programa comience a ser procesado. Esto también significa que puedes tener la misma variable con diferentes tipos |
¿Qué tipos de datos existen en JS? | La última definición del estándar ECMAScript define siete tipos de datos: Seis tipos de datos que son primitives: Boolean Null Undefined Number String Symbol (nuevo en ECMAScript 6) y Object |
¿Cuál es el tipo de dato SYmbol? | El Symbol es un nuevo tipo en JavaScript introducido en la versión ECMAScript Edition 6. Un Symbol es un valor primitivo único e inmutable y puede ser usado como la clave de una propiedad de un Object (ver debajo). En algunos lenguajes de programación, los Symbols son llamados átomos. Se pueden comparar con enumeraciones de nombres (enum) en C. Para más detalles consultar Symbol y el objeto envoltura Symbol en JavaScript. |
¿Qué hace la propiedad Sting.length | La propiedad length guarda la longitud del String |
¿Qué es "escape character"? | Todos los caracteres especiales, comienzan con la barra invertida \. También se la llama "escape character". |
¿QUé hace el método str.charAt(pos)? | Obtiene el caracter en la posición "pos". También se pueden usar corchetes: str[pos] |
¿Qué significa que los strings sean inmutables? | En JavaScript, a los Strings no se puede modificar su valor. |
¿Que hace el método str.indexOf? | String.indexOf funciona de manera análoga a Array.indexOf: recibe un segundo parámetro opcional, que nos permite comenzar la búsqueda a partir de una posición en particular. lastIndexOf(pos) y lastIndexOf. |
¿Qué hacen los métodos includes, startsWith, endsWith? | includes, startsWith, endsWith |
¿Cuáles son los 3 métodos que nos permiten obtener substrings? | Hay 3 métodos en Javascript que nos permiten obtener substrings: substring, substr and slice. |
¿Qué hace el método str.slice? | str.slice(start [, end]) : Devuelve parte del string comenzando en start hasta (pero sin incluir) end. Si no hay segundo parámetro, corre hasta el final del string. Valores negativos para start/end también son posibles. Quiere decir que la posición se cuenta comenzando por el final: |
¿Qué hace el método str.substring? | str.substring(start [, end]) : Devuelve el substring entre start y end. Interpreta los argumentos negativos como 0 (Cero) |
¿Qué hace el método str.substr? | str.substr(start [, length]) : Devuelve parte del string comenzando desde start, length caracteres. El primer argumento puede ser negativo, para contar desde el final. |
¿Qué hace el método str.codePointAt(pos)? | str.codePointAt(pos): Devuelve el código del caracter en la posición pos |
¿Qué hace el método String.fromCodePoint(code)? | String.fromCodePoint(code): Crea un string a partir del code numérico: |
¿Qué hace el método str.trim()? | str.trim() -- quita espacios extras del comienzo y fin del string. |
¿Qué hace el método str.repeat(n)? | str.repeat(n) -- repite el string n veces. |
¿Qué son los objetos preconstruidos | Estos objetos y funciones que vienen con JavaScript pero que no son parte del lenguaje en sí, también se conocen como la librería estándar (standard library) ya que siempre podemos contar con ellos. Son librerías que no tenemos que importar y siempre están disponibles, independientemente del entorno donde se ejecute nuestro código (navegador, node, ...). |
Ejemplos de Objetos preconstruidos? | Array Object Function Boolean Number Math Date String RegExp JSON Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError DataView Proxy |
¿Qué es una tarea asíncrona? | Esto quiere decir que tienen que esperar (a que ocurra un evento, a que recibamos una respuesta por http, ...) para poder completar su trabajo. |
¿Qué significa la naturaleza non-blocking de JS? | Que no bloquea el hilo - thread - mientras espera a que se complete una tarea asíncrona |
¿Qué es un callback? | una función, a la que comúnmente se le llama callback, que será la que se ejecute una vez que lleguen los datos del proceso lento. |
¿Qué es una promesa?? | Se crean en ES6. Están diseñadas para representar a esos datos que están, estarán en el futuro o simplemente nunca llegarán (en caso de que haya alguna falla). |
¿Cómo se crea una promera? | Lo primero es la creación de una promesa a través del código new Promise(...), como puedes ver es un objeto que representa a este dato que puede estar inmediatamente, en el futuro o simplemente no estar. Este objeto para ser creado recibe un callback que tiene dos parámetros: resolve y reject |
¿Qué es el parámetro resolve del callback de la promesa? | El primer parámetro del callback la promesa es una función especial que llamaremos cuando el trabajo lento que hacemos se termina. Con esto se da por terminada la promesa y los datos que queramos retornar se ponen como parámetros de resolve. |
¿Qué es el parámetro reject del callback de la promesa? | Nuestro trabajo lento puede fallar, por esto tenemos que tener una forma de comunicar que nuestro proceso lento tuvo un error. Las promesas nos proveen de reject, una función que podemos llamar en caso de error y que recibe como parámetro un error de javascript. |
¿Qué es then? | then es una función que el usuario de la promesa provee para cuando el proceso lento terminó de ejecutarse correctamente. El número de parámetros que recibe son variables y dependen del creador, generalmente retornan un único parámetro con los datos resultantes. Si queremos anidar promesas, es importante al final de esta función retornar otra promesa. |
¿Qué es catch? | catch en tanto, es una función que será ejecutada en caso de que en cualquier paso de la cadena de then haya una falla. Esto es muy importante, puesto que concentra todo el manejo de errores en solo una parte, aliviando a la programadora de tener que manejar errores en cada uno de los callbacks. |
¿Cuáles son los 4 estados de una promesa? | pending: Estado inicial, ni terminada exitosamente o rechazada. fulfilled: operación exitosa. rejected: operación fallida o rechazada. settled: la Promise ha sido exitosa o rechazada, pero no está pendiente. |
¿Cuáles son los modos de ejecución en JS? | normal mode y strict mode |
¿Qué hace el modo estricto? | El modo estricto realiza cambios en la semántica normal de javascript. Un aspecto importante es que el modo estricto elimina errores silenciosos, lo que obligó a escribir un código mejor y no cometer errores. El modo estricto cambia la sintáxis y el comportamiento en tiempo de ejecución. Los cambios generalmente caen dentro de estas categorías: cambios que convierten erratas en errores (como errores de sintáxis o en tiempo de ejecución), cambios que simplifican como una variable particular es calculada, cambios que simplifian el uso de eval y arguments, cambios que hacen más fácil escribir JavaScript "seguro", y cambios que anticipan la evolución futura de EMACScript. |
¿Qué es la directiva: "use strict"? | La directiva use strict es una directiva que no supone una instrucción de código, sino que indica el modo en que el navegador debe ejecutar el código JavaScript. Se usa para invocar el modo estricto |
¿A qué se refiere que el modo estricto convierte erratas en errores? | El modo estricto cambia algunos errores de sintáxis tolerados en modo no estricto y los convierte en errores. El modo estricto trata las erratas como errores, para que puedan ser descubiertas y subsanadas inmediatamente. |
¿Para qué se usa la sentencia throw? | Utiliza la sentencia throw para lanzar una excepción. Cuando lanzas un excepción, se especifica la expresión que contiene el valor para ser lanzado |
¿Que es una sentencia "try...catch"? | La sentencia try...catch marca un bloque de instrucciones a intentar que pueden causar alguna excepción, y declarar una o más respuestas en caso de que una excepción sea arrojada. Si una excepción es arrojada, la sentencia try...catch se encarga de atraparla. |
¿Cómo esta formada la sentencia "try...catch"? | La sentencia try...catch consiste en un bloque try, el cuál contiene una o más instrucciones, y ninguno o varios bloques catch, conteniendo sentencias que especifican que hacer si una excepción es arrojada en un bloque try. Por último se ejecuta el bloque finally luego de que los bloques try y catch hayan sido ejecutados, pero antes de las instrucciones que se encuentren luego de la sentencia try...catch. |
¿Es recomendable usar throw en procesos asíncronos? | A la hora de implementar funciones asíncronas, donde vamos a comunicar el resultado a través de un callback, evitamos arrojar errores con throw y en vez los comunicamos como argumento a una función callback. O en el caso de promesas usar el reject y catch. |
¿Qué es debugging? | Debugging es un proceso de identificación y resolución de errores (bugs). |
¿Qué es un error de sintaxis | Un error de sintaxis se produce al escribir, incorrectamente, alguna parte del código fuente de un programa. |
¿Qué son los errores lógicos? | Los errores lógicos son errores que impiden que su programa haga lo que estaba previsto. Su código puede compilarse y ejecutarse sin errores, pero el resultado de una operación puede generar un resultado no esperado. |
¿Qué significa el error "SyntaxError: Unexpected token"? | Un "token" es una pieza pequeña del código. Por ejemplo, variables, funciones, operadores, y palabras claves (como if o while), todos son tokens. La palabra "unexpected" significa "inesperado", entonces si tienes un token inesperado, significa que el navegador estaba leyendo el código hasta que llegó a algo que no debe estar ahí. Usualmente, esto significa que algo hace falta (como una coma o un +) justo antes del token inesperado. |
¿Cómo exportas e importas cusando CommonJS? | require, module, module.exports |
¿Cómo exportas e importas usando módulos de ES6? | import, export |
¿Qué es una aserción? | Una aserción no es más que un pedacito de código que comprueba si un valor es el esperado, y en caso de que no lo sea lo reporte. |
¿Que significa scope de bloque? | Significa que cualquier variable definida en un bloque es visible y accesible desde dentro del bloque completo , pero no desde afuera. |
¿Cual es el enfoque declarativo? | Un enfoque declarativo es cuando le dice a la máquina lo que necesita hacer y deja que descubra los detalles. Por ej. map |
¿Qué es el alcance léxico? | tipo particular de alcance, lo que significa que el valor de una variable se define por su posición cuando se escribe. No cuando se llama, que es algo que sucede con el alcance dinámico alternativo (utilizado en algunos otros lenguajes de programación). |
¿Qué es una función pura? | Una función que no tiene efectos secundarios (no modifica recursos externos, Un efecto secundario es cuando una función interactúa con alguna otra función u objeto fuera de ella), y su salida solo está determinada por los argumentos. Podría llamar a esta función 1M veces, y dado el mismo conjunto de argumentos, la salida siempre será la misma. |
¿Qué es el scope? | El alcance es el conjunto de variables que es visible para una parte del programa. |
Want to create your own Flashcards for free with GoConqr? Learn more.