Entrevista básica de JavaScript (1)

js **
1. ¿Problema de cierre?
"Un cierre es
una función que puede leer otras funciones** 内部变量; solo aquellos dentro de la función 子函数pueden `leer variables locales;
por ejemplo: cierres comunes

function fn(){ 
	var a =1 ,b = 2;
funciton closure(){
 	return a+b; 
 } 
 	return  closure; 
}

2. ¿Fuga de memoria?
Pérdidas de memoria: se refiere a persistir任何对象 después de que ya no lo tiene o no lo necesita

3. ¿Qué operaciones provocarán pérdidas de memoria?
Si se 第一个参数utiliza setTimeout 用字符串en lugar de una función , se producirán pérdidas de memoria,
cierres, registros de consola, bucles (cuando dos objetos se refieren entre sí y se retienen entre sí, se generará un bucle);

4. ¿Cómo resolver la fuga de memoria JS?
1.1 Puede agregar " usar estricto " al comienzo del archivo JavaScript para usar el modo estricto ; de esta manera, analizar JavaScript en modo estricto puede evitar variables globales accidentales
1.2 Cierre, una función interna que puede acceder a la función externa (cerrada) variables;

5. ¿Entiendes el prototipo?

原型的主要作用:就是为了`实现继承`与`扩展对象`;

JavaScript es un tipo de 通过原型实现继承的语言lenguaje de alto nivel que es diferente de otros lenguajes de alto nivel (como java, se pasa C# 类型决定继承关系的) (JavaScript es sí 动态的弱类型语言) puedes pensar que todo en JavaScript es un objeto **** El prototipo es también un objeto通过原型 que puede implementar la herencia de propiedad del objeto en el objeto Todos 包含tienen un " prototype”内部属性, el prototipo de este atributo ; "prototipo" como un objeto , no se puede acceder directamente对应的就是该对象内部属性 . Para facilitar la visualización del prototipo de un objeto, ( introdujo el descriptor de acceso de prototipo de objeto estándar " Object.getPrototype(object)");

6. Cadena prototipo (resuelve el problema de la herencia)?
En primer lugar, cuando se trata de la cadena de prototipos, primero debemos hablar sobre el prototipo : cada objeto inicializará una propiedad dentro de él , que es el prototipo (prototipo)
cadena de prototipos : cuando nosotros 访问一个属性时, si 这个对象不存在这个属性, entonces su 就会继续去从 prototype里去找propiedad, y 每个prototypeWill 有自己的prototype属性, así se genera la cadena prototipo ;

当我们修改原型时,与之相关的对象也会继承这一改变

7. ¿Herencia en js?
En primer lugar, sepa que hay 6 métodos de herencia
1.1. Herencia de cadena
de prototipo : un tipo de referencia hereda las propiedades y métodos de otro tipo de referencia a travésapply() del call()prototipo; Ejecute el constructor;
1.3. Herencia de combinación (prototipo + construcción prestada) : combinar la cadena de prototipos y la tecnología de tomar prestado el constructor juntos, para que se complementen entre sí
; Algunos objetos crean nuevos objetos y, al mismo tiempo, no es necesario crear un tipo personalizado 1.5. Herencia parasitaria: la herencia parasitaria es una versión mejorada de herencia de prototipos 1.6 Herencia combinada parasitaria : heredar propiedades tomando prestadas funciones, a través de prototipos Una forma híbrida de la cadena para heredar métodos;

8. ¿Cuál es la situación de esto?
1.1. Llamado en forma de función, siempre apunta a ventana;
1.2. Llamado en forma de método, esto apunta al método de llamada;
1.3. Llamado en forma de constructor, esto apunta al objeto recién creado ;
1.4. Use call (), apply(), esto apunta al objeto especificado;
1.5, función de flecha, este punto de la función de flecha depende de si hay una función en la capa externa; dos casos:
si hay: entonces el this de la función exterior Es el this de la función flecha interna;
: Si no hay: apunta a la ventana;
1.6, el especial este punto generalmente apunta al último objeto que llama;

9. La diferencia entre forEach y map en la matriz

El mismo punto : cada elemento de la matriz se repite y el grupo no cambiará la matriz original;
la diferencia : map 方法devolver una nueva matriz; la matriz vacía no se detectará, el método de mapa no cambiará la matriz original;
forEach 方法usado Llame a cada elemento de la matriz y pase el elemento a la función de devolución de llamada, 对于空数组que es 不会调用la función de devolución de llamada.
Independientemente de si arr es una matriz vacía, forEach devuelve undefined;

10. ¿Cuál es la diferencia entre for in y for of? Al
hacer un bucle de propiedades de objeto, use for...in cuando for...in
atraviese matrices , for...of for...of no puede ciclar objetos ordinarios , debe usarse en conjunto con Objeto.keys() ;for...of
循环出的是 key循环出的是 value

Supongo que te gusta

Origin blog.csdn.net/weixin_45103130/article/details/123654129
Recomendado
Clasificación