[js] preguntas básicas de la entrevista

1. Explica qué es un cierre:
Cierre: Es una función que puede leer las variables internas de la función externa.
El cierre debe cumplir tres condiciones:
acceder al ámbito;
anidar funciones;
ser llamado fuera del ámbito.
Pros: las variables se pueden reutilizar sin contaminación variable.
Desventajas: Provocará fugas de memoria
Puntos a tener en cuenta al usar cierres:
dado que los cierres harán que las variables de la función se almacenen en la memoria, el consumo de memoria es grande, por lo que no se puede abusar de los cierres, de lo contrario, causará problemas de rendimiento en las páginas web. En IE puede provocar pérdidas de memoria. La solución es eliminar todas las variables locales no utilizadas antes de salir de la función.
El cierre cambiará el valor de la variable dentro de la función principal fuera de la función principal. Por lo tanto, si
usa la función principal como un objeto (objeto), el cierre como su método público (método público) y la variable interna como su propiedad privada (valor privado), debe tener cuidado de no sentirse libre de cambiar el valor de la variable dentro de la función principal.

2. Dime algo con lo que estés familiarizado en ES6:
Herencia de clase En ES6, la cadena de prototipos ya no se usa para implementar la herencia como ES5, pero se introduce el concepto de Clase

async, await Use async/await, con promesa, puede escribir código síncrono para manejar procesos asíncronos, mejorar la simplicidad y la legibilidad del código async se usa para declarar que una función es asíncrona, y await se usa para esperar un método asíncrono Ejecución completada

Promise es una solución para la programación asíncrona, que es más razonable y potente que las soluciones tradicionales (funciones de devolución de llamada y eventos)

El símbolo es un tipo primitivo. El símbolo se genera llamando a la función de símbolo, que acepta un parámetro de nombre opcional, y el símbolo devuelto por esta función es único

Proxy proxy usa proxy (Proxy) para monitorear la operación del objeto, y luego puede hacer algunas cosas correspondientes

El conjunto es una colección de datos similar a una matriz, desordenada, de inserción y eliminación rápidas, sin elementos duplicados y de búsqueda rápida.

El mapa es una estructura de datos similar a los objetos. La diferencia con los objetos es que su clave puede ser de cualquier tipo, pero los objetos solo pueden usar cadenas y tipos de símbolos, y el almacenamiento de Mapa es más relevante.

La función del generador puede bloquear la ejecución de la función. Al pasar parámetros, se puede pasar un nuevo valor a la función para continuar con la ejecución. Se puede usar para cambiar de asíncrono a bloqueo síncrono.

3. ¿Qué es Event Loop?:
una estructura de programa para esperar y enviar mensajes y eventos.

1. Todas las tareas se ejecutan en el subproceso principal, formando una pila de ejecución.
2. Si el subproceso principal encuentra una tarea asíncrona, si es una microtarea, colóquela en la cola de mensajes de la microtarea, y si es una macrotarea, colóquela en la cola de mensajes de la macrotarea.
3. Se ejecutan todas las tareas de sincronización de la pila de ejecución.
4. Ejecute la cola de microtareas y luego ejecute la cola de macrotareas.
5. Paso de sondeo 4.
4. La diferencia entre bucle for y forEach
1. El bucle for puede usar break para salir del bucle, pero forEach no.
2. El ciclo for puede controlar el punto de inicio del ciclo (el número inicializado por i determina el punto de inicio del ciclo), y forEach solo puede comenzar desde el índice 0 de forma predeterminada.
3. Durante el proceso de bucle for, se admite modificar el índice (modificar i), pero forEach no puede hacerlo (el índice de control subyacente se incrementa automáticamente y no se puede controlar).

5. ¿Cuáles son los escenarios de uso de Promise?

  • Escenario 1: Obtener información del archivo.
  • Escenario 2: Obtener información con AJAX
  • Escenario 3: Resuelva el infierno de devolución de llamada e implemente la cola de tareas en serie.
  • Escenario 4: Proceso asíncrono para operaciones locales en nodo

6. ¿Métodos comunes entre dominios?
JSONP:
JSONP es una tecnología que utiliza scripts de cadena externos sin restricciones de origen cruzado para implementar solicitudes de origen cruzado.
CORS:
cors: uso compartido de recursos entre dominios, es una tecnología que implementa datos de solicitud de origen cruzado. Esta es una de las soluciones al problema de origen cruzado. También solución amplia.
Proxy de reenvío
Primero cree su propio servidor proxy
1, el usuario envía una solicitud a su propio servidor proxy
2, su propio servidor proxy envía una solicitud al servidor
3, el servidor devuelve los datos a su propio servidor proxy
4, su propio servidor proxy envía Los datos se devuelven al usuario
Proxy inverso
1. El usuario envía una solicitud al servidor (el acceso es en realidad un servidor proxy inverso, pero el usuario no lo sabe)
2. El servidor proxy inverso envía una solicitud al servidor real servidor
3. El servidor real devuelve los datos al servidor proxy inverso
4. El servidor proxy inverso devuelve los datos al usuario
a través de postMassage,

7. ¿La diferencia entre nulo e indefinido?
null es un objeto (puntero de objeto vacío) que representa "nada", que es 0 cuando se convierte en un valor;
indefinido es un valor original que representa "nada", que es NaN cuando se convierte en un valor .
Expansión:
nulo significa "sin objeto", es decir, no debería haber ningún valor allí. El uso típico es:
como parámetro de una función, lo que indica que el parámetro de la función no es un objeto.
Como el punto final de la cadena de prototipos del objeto.
indefinido significa "valor faltante", es decir, debería haber un valor aquí, pero aún no se ha definido. El uso típico es:
cuando se declara una variable pero no se le asigna un valor, es igual a indefinido.
Al llamar a la función, no se proporciona el parámetro que se debe proporcionar y el parámetro es igual a indefinido.
El objeto no tiene ninguna propiedad asignada y el valor de esta propiedad no está definido.
Cuando la función no devuelve un valor, devuelve indefinido de forma predeterminada.

8. La diferencia entre funciones ordinarias y funciones de flecha
La diferencia entre funciones ordinarias y funciones de flecha:

1. La función de flecha no tiene prototipo (prototipo), la función de flecha no tiene su propio this y hereda el this del bloque de código externo.
2. No se puede usar como constructor, es decir, no se puede usar el comando new, de lo contrario se reportará un error.
3. No se puede utilizar el objeto arguments, que no existe en el cuerpo de la función. Si desea usarlo, puede usar el parámetro resto en su lugar.
4. El comando yield no se puede usar, por lo que la función de flecha no se puede usar como una función Generator (generador).
5. Debido a que no existe esto, no puede usar llamar, vincular y aplicar para cambiar la dirección de esto.

9. ¿La diferencia y el uso entre Promsie y async/await?
Diferencia:

1) Hay una palabra clave asíncrona adicional delante de la función. La palabra clave await solo se puede usar dentro de las funciones definidas por async. La función asíncrona devuelve implícitamente una promesa cuyo valor de resolución es el valor de la devolución de la función.
2) El punto 1 implica que no podemos usar await en el código externo porque no está dentro de la función asíncrona. Uso:
1. async y await se usan en pares, y await existe dentro de async. De lo contrario, se informará un error.
2. await significa esperar a que regrese una promesa aquí y luego ejecutarla a continuación.
3. await debe ir seguido de un objeto de promesa (o no, si no, no tiene mucho sentido…)

10. ¿Cuál es el flujo de eventos y el mecanismo de propagación del flujo de eventos?
Después de que se activa el evento, todo el proceso desde encontrar el elemento de destino, ejecutar el evento del elemento de destino y dejar el elemento de destino se denomina flujo de eventos.

La propagación del flujo de eventos del navegador estándar W3C se divide en tres etapas: la etapa de captura, la etapa de destino y la etapa de burbujeo.

La fase de captura se refiere al proceso de encontrar el elemento de destino.Este proceso de búsqueda va desde el objeto de documento más grande hasta html y luego hasta el cuerpo. . . hasta el elemento de destino.

Después de encontrar el elemento de destino, llame a la función de procesamiento correspondiente al ejecutar el evento de vinculación.Este proceso se denomina fase de destino.

Después de que finaliza la ejecución del evento del elemento de destino, desde el elemento de destino hasta su elemento principal. . . El proceso desde el cuerpo, html hasta el documento es la etapa burbujeante.
 

11. ¿Cuál es la diferencia entre less y sass?
El entorno de compilación es diferente. Sass se procesa en el lado del servidor y se puede compilar con Ruby y node-sass; less necesita importar less.js para procesar la salida, o usar herramientas para procesarlo en css en el lado del servidor, también compilado en línea.
El definidor de variables es diferente, less usa @ y sass usa $.
sass admite sentencias de rama, menos no
 

Supongo que te gusta

Origin blog.csdn.net/jiangshen_a/article/details/126741451
Recomendado
Clasificación