Preguntas de la entrevista inicial (JavaScript)

Introducir los tipos de datos básicos de javaScript?

Tipos de datos básicos : número , cadena booleano , nulo , indefinido

object t es el objeto principal de todos los objetos en javascript

Objetos de encapsulación de datos: objeto, matriz, booleano, número, cadena

Otros objetos: Función, Argumentos, Matemáticas, Fecha, Error, RegExp

Otros tipos de datos: Símbolo

Tipo de datos de referencia: Objeto (matriz, fecha, RegExp, función)

¿Cuáles son los objetos integrados de js?

Los objetos comúnmente utilizados en js son: Argumentos  función colección de parámetros     Array  array     Boolean  Objeto  booleano Datos  fecha hora   Objeto de excepción    de error  Constructor de     funciones  Objeto matemático     Número Objeto numérico  Objeto   Objeto básico RegExp  Objeto de expresión regular   Cadena Objeto de cadena

¿De cuántas maneras js crea objetos?

modo de fábrica, modo de constructor, modo de prototipo, modo de prototipo de constructor híbrido, modo de prototipo dinámico

¿Cuántas formas de crear funciones?

Función de declaración de funciones fun(){ }

expresión de función let fun =función(){ }

Tipo de objeto de función let fun = nueva función ("parámetro", "cuerpo de función")

¿Cómo convertir una matriz en un objeto json y luego volver a convertirla?

¿Qué tipos de datos devuelve el tipo de javascript?

objeto número función booleano underfind cadena

¿Cuántas formas hay de retrasar la carga de js?

Seis tipos: atributo diferido, atributo asíncrono, crear dinámicamente el método dom, usar el método getScript de jquery, usar el método de retraso setTimeout, dejar que js se cargue al final.

HTML 5 define el atributo asíncrono para la etiqueta <script>. Después de agregar este atributo, el script y el HTML se cargarán juntos (asincrónicamente) y el código se ejecutará sin problemas.

Cuando el navegador encuentra una secuencia de comandos asíncrona, no bloqueará la representación de la página, sino que la descargará y ejecutará directamente. Pero el problema con esto es que no se puede controlar el orden de ejecución de los diferentes guiones, pero los guiones no impedirán la visualización de las páginas restantes.

El atributo asíncrono solo se aplica a los archivos de script externos.

¿Cuál es la diferencia entre colocar la etiqueta Script en la parte inferior de la página antes y después de cerrar el cuerpo?

¿Cómo los analizará el navegador? Si se coloca antes del cierre del cuerpo, bloqueará la carga de otros recursos.Si se coloca después del cierre del cuerpo, no afectará la carga de elementos en el cuerpo.

La diferencia entre dividir() unir()

El primero tiene la forma de cortar en una matriz, y el segundo es convertir una matriz en una cadena.

método join() : se utiliza para poner todos los elementos de la matriz en una cadena.

Los elementos están separados por el delimitador especificado.

Método split() : se utiliza para dividir una cadena en una matriz de cadenas.

Métodos de matriz pop() push() unshift() shift()

Añadir al final de Push() pop() borrar al final Unshift() añadir shift() al principio y borrar al principio

¿Qué son los cierres?

El cierre js es una función anidada dentro de una función, y la subfunción se refiere a la variable de la función externa. Cuando se llama a la subfunción por retorno, la variable siempre permanecerá en la memoria.

¿Cómo agregar, eliminar, mover, copiar, crear y encontrar nodos?

1) Crear un nuevo nodo

createDocumentFragment() //Crear un fragmento DOM

createElement() //Crear un elemento específico

createTextNode() //Crear un nodo de texto

2) Agregar, quitar, reemplazar, insertar

appendChild() //añadir removeChild() //eliminar replaceChild() //reemplazar insertBefore() //insertar

3) Encuentra

getElementsByTagName() //Por el nombre de la etiqueta getElementsByName() //Por el valor del atributo Name del elemento getElementById() //Por el Id del elemento, unicidad

¿Cómo implementa Javascript la herencia?

Herencia de cadena de prototipos, herencia de constructores prestados, herencia de composición, herencia parasitaria, herencia de composición parasitaria

¿Podría hablar sobre las desventajas de las cookies?

Desventajas: 1. Límites en el número y duración de las 'Cookies'. Cada dominio solo puede tener 20 cookies como máximo, y la longitud de cada cookie no puede exceder los 4 KB; de lo contrario, se cortará.

2. Cuestiones de seguridad. Si la cookie es interceptada, esa persona puede obtener toda la información de la sesión. Incluso el cifrado no ayuda, porque el interceptor no necesita saber el significado de la cookie, puede lograr su objetivo siempre que reenvíe la cookie tal como está.

3. Algunos estados no se pueden guardar en el lado del cliente. Por ejemplo, para evitar envíos repetidos de formularios, debemos mantener un contador en el lado del servidor. Si almacenamos este contador en el lado del cliente, no hará nada.

JavaScript este puntero, cierre, alcance

esto: apunta al contexto de llamada

Cierre: el ámbito interno puede acceder a las variables del ámbito externo

Alcance: la definición de una función abre un alcance local, y todo el entorno de ejecución js tiene un alcance global

 ¿Qué hace exactamente el operador new?:
1. Crea un objeto vacío, y la variable this se refiere al objeto, y también hereda el prototipo de la función.
 2. Las propiedades y los métodos se agregan al objeto al que hace referencia this.
 3. Esto hace referencia al objeto recién creado y finalmente lo devuelve implícitamente.
Antivibración y
antivibración de
estrangulamiento     En el evento de desplazamiento, es necesario realizar un cálculo complejo o realizar la operación de clic antisecundario de un botón. Se puede lograr mediante la función anti-jitter

 La esencia del estrangulamiento
    anti-vibración y estrangulamiento es diferente. Anti-jitter es convertir múltiples ejecuciones en la última ejecución, y throttling es convertir múltiples ejecuciones en ejecución a intervalos.

Política del mismo origen de js Mismo origen
: Mismo protocolo, mismo nombre de dominio, mismo puerto
 Origen diferente: Siempre que uno de los protocolos, nombres de dominio y puertos sea diferente, diferentes fuentes generarán una
 política de mismo origen entre dominios Principal función: restrinja el acceso mutuo entre servidores de diferentes orígenes, mejore la seguridad del acceso del navegador a las páginas web

¿Qué es un proxy de eventos?
Eso es delegar el evento que originalmente debe vincularse al elemento principal y dejar que el elemento principal asuma el rol de monitoreo de eventos.
El principio del proxy de eventos es el burbujeo de eventos de elementos DOM. La ventaja de usar el proxy de eventos es que puede mejorar el rendimiento,
ahorrar mucho uso de memoria y reducir el registro de eventos.
Puede darse cuenta de que cuando se agregan nuevos subobjetos, no hay necesidad de vincularlos nuevamente.

 ¿Cuál es la diferencia entre forEach y map en una matriz?
El mismo punto de forEach y map
El mismo punto es recorrer cada elemento de la matriz

Los métodos forEach y map admiten 3 parámetros cada vez que se ejecuta la función anónima. Los parámetros son item (cada elemento actual)
, index (valor de índice) y arr (la matriz original).
Esto en la función anónima apunta a la ventana y solo se puede atravesar La matriz no cambiará la matriz original 

 La diferencia entre
 el método de mapa
1. El método de mapa devuelve una nueva matriz, y los elementos de la matriz son los valores procesados ​​llamando a la función de la matriz original.
2. El método de mapa no detecta matrices vacías, y el El método map no cambia la matriz original.
3. Compatibilidad con navegadores: Chrome, Safari1.5+, opera all support, IE9+, si arr es una matriz vacía, el
método map devuelve una matriz vacía.

método  forEach
1. El método forEach se utiliza para llamar a cada elemento de la matriz y pasar el elemento a la función de devolución de llamada
2. forEach no llamará a la función de devolución de llamada para una matriz vacía. Independientemente de si arr es una matriz vacía,
forEach devuelve undefined. Este método simplemente ejecuta cada elemento de la matriz como un parámetro de devolución de llamada una vez

 ¿Cuál es el mecanismo de recolección de basura en JS, cuál se usa comúnmente y cómo lidiar con él?
El mecanismo de recolección de basura de JS es para evitar fugas de memoria. El significado de las fugas de memoria es que cuando ya no se necesita una parte de la memoria, el mecanismo de recolección de basura aún existe en esta parte de la memoria. El mecanismo es encontrar variables no utilizadas de forma intermitente
y irregularmente, y suéltelos para borrar la memoria a la que apuntan.

La forma más común de recolección de basura en JS es
 marcar y borrar
el principio de funcionamiento: cuando una variable ingresa al entorno, marque esta variable como "ingresando al entorno". Cuando una variable sale del entorno,
se marca como "salir del entorno". Recuperar memoria si está marcado como "dejar el entorno"

 Flujo de trabajo:
el recolector de elementos no utilizados marcará todas las variables almacenadas en la memoria en tiempo de ejecución, eliminará las variables del entorno
y las variables a las que hacen referencia las variables del entorno y, a continuación, las marcará como Variables para eliminar.
El recolector de elementos no utilizados completa la limpieza de la memoria, destruye esos valores marcados y recupera el espacio de memoria que ocupan

Varios métodos de bucle transversal de js
forEach() : El parámetro es una función de devolución de llamada, que recorrerá todos los elementos de la matriz. La función de devolución de llamada acepta tres parámetros, a saber, valor, índice, auto; forEach no tiene valor de retorno map()    
 : mismo como forEach, al mismo tiempo La función de devolución de llamada devuelve datos para formar una nueva matriz. El mapa devuelve    
 cada () : lo mismo que forEach, y la función de devolución de llamada devuelve valores booleanos, todos los cuales son verdaderos, y cada devuelve verdadero    
 algunos ( ) : lo mismo que forEach, y la función de devolución de llamada devuelve valores booleanos, siempre que haya uno que sea verdadero, devuelto como verdadero por algunos

¿Pros y contras de los iframes?

Ventajas: 1. Resuelva el problema de carga de contenido de terceros de carga lenta, como íconos y anuncios.

2. Caja de arena de seguridad

3. Cargue scripts en paralelo

Desventajas: 1. iframe bloqueará el evento Onload de la página principal

2. Aunque el contenido esté vacío, tardará en cargarse

3. Sin semántica

 Función de cadena:
                .charAt(index);//el método charAt() puede devolver el carácter en la posición especificada.
                .charCodeAt(index);//El método puede devolver la codificación Unicode del carácter en la posición especificada. El valor devuelto es un número entero entre 0 y 65535.
                String.fromCharCode();//El método devuelve la cadena creada por la secuencia especificada de unidades de código UTF-16
                .indexOf();
                .lastIndexOf();
                .concat();
                .split();//Dividir la cadena en Array split("")
                .slice();
                .substring();
                .substr();//La nueva versión descarta y recomienda subcadena
  
                .replace(searchValue,replaceStr|function);//El texto reemplaza el primer carácter devuelto Nueva cadena
                .replaceAll(searchValue,replaceStr|function);//El reemplazo de texto coincide con todos los caracteres
                .toLowerCase();//Convierte todos los caracteres ingleses a minúsculas
                .toUpperCase();//Convertir todas las cadenas en inglés a mayúsculas.repetir
                ();//Copiar el número especificado de
                caracteres.trim();//Eliminar los espacios iniciales y finales.
    Función de matriz:
                indexOf(); El elemento de búsqueda es en la matriz La posición de la primera aparición no devuelve -1
                push(); Agrega uno o más elementos al final de la matriz
                pop(); Elimina el último elemento de la matriz y devuelve el elemento eliminado
                shift(); Eliminar el primer elemento de datos y devolver el elemento eliminado
                sin cambiar (); Insertar uno o más elementos al comienzo
                de la matriz sort(); Ordenar los elementos de la matriz.
                slice(); Obtener el fragmento de la matriz y devolverlo sin cambiar el matriz original
                splice(); Interceptar, eliminar, modificar los elementos de la matriz y devolver la matriz recibida Afecta el resultado. Cambiará la matriz original
                concat(); Fusionar la matriz
                join(); Conectar cada elemento de la matriz con un separador para formar una cadena
                inversa(); Voltear el arreglo
                map(); Recorrer cada elemento en el arreglo y devolver un nuevo arreglo
                filter(); filtrar la matriz
                forEach(); recorrer la matriz

call, apply, bind difference
call(objeto apuntado por this, parámetro 1, parámetro 2, parámetro 3, ...)
apply(objeto apuntado por this, [parámetro 1, parámetro 2, parámetro 3, ...])
bind( El objeto al que apunta this, parámetro 1, parámetro 2, parámetro 3, ...)
son los mismos:
call, apply y bind son todos métodos del prototipo de función, y
todos cambian el punto interno de este cuando el Se llama a la función
El primer parámetro es El objeto al que apunta esto dentro de la función
Diferencias:
la llamada comienza desde el segundo parámetro como un parámetro de la función, y el parámetro se pasa en un solo paso, y no se puede pasar como una matriz de parámetros;
apply comienza desde el segundo parámetro como parámetro de la función, y el segundo parámetro es una matriz
que contiene todos los parámetros de la función.
 bind comienza desde el segundo parámetro como los parámetros de la función, y los parámetros son pasado en un solo paso, y no se puede pasar en una matriz de parámetros,
y devolver una función a la que apunta this dentro de la función enlazada

¿A qué se debe prestar atención cuando se usan funciones de flecha?
(1) Con la función de flecha, esto no apunta a la ventana, sino al padre (señalar es variable) (
2) El objeto de argumentos no se puede usar
(3) No se puede usar como un constructor, lo que significa que el nuevo comando no se puede usar, de lo contrario se generará un error
(4) El comando yield no se puede usar, por lo que la función de flecha no se puede usar como una función de generador

Qué es una copia superficial y una copia profunda de un objeto, cuál es la diferencia y cómo implementar una copia profunda de un objeto

Copia superficial copia la dirección de la referencia al objeto

La copia profunda es recorrer el objeto recursivamente hasta que el valor sea un tipo de datos básico y luego copiar

La copia superficial de los valores de los objetos antiguos y nuevos se afectará entre sí. Las copias profundas no se afectan entre sí

Proceso de implementación: definir una función de copia profunda, recibir un parámetro,

Use typeof para determinar si el parámetro es un objeto

Luego use Array.isArray para juzgar si es una matriz, si lo es, se generará una matriz vacía, y si no lo es, se generará un objeto vacío.

Realice un bucle for in sobre los parámetros para determinar si cada elemento es un objeto. Si lo es, se llama a sí mismo y lo asigna a un nuevo objeto. De lo contrario, asigna un valor antes y devuelve el nuevo objeto.

json..parse(Json.stringify(obj)) también puede realizar una copia profunda de objetos y matrices, pero no puede copiar funciones

Supongo que te gusta

Origin blog.csdn.net/H_hl2021/article/details/121751152
Recomendado
Clasificación