前端面试题--十

136 阅读2分钟

1.深拷贝浅拷贝的区别?怎样实现一个深拷贝?

浅拷贝:指的是创建新的数据,这个数据有着原始数据属性值的一部分精确拷贝。
深拷贝:开辟一个新的栈,俩个对象属性完全相同,但是对应俩个不同的地址,修改一个对象的属性,不会改变另一个对象的属性。

通过递归实现深拷贝
通过JSON.stringify()实现
loddash/doneDDeep

2.js中的基本数据类型 和 引用数据类型都有哪些?

基础数据类型:字符串、数值、布尔值、undefinednull
引用数据类型:对象、数组、函数

3.常见 DOM 操作有哪些?

查找节点、新建、增加、删除节点、设置样式
1.获取dom元素:document。qurerySelector()
2.父节点:parentNode
3.子节点:childNodes(获取所有子节点内容,会解析换行、空格等)
4.子节点:children(获取子节点标签)
5.下一个兄弟节点:nextSibling
6.前一个兄弟节点:previousSibling
7.下一个兄弟元素:nextElementSibling
8.上一个兄弟元素:previousElementSibling
9.获取自定义属性:dataset
10.元素内容:innerHTML(解析标签,innertext 不解析标签)
11.追加节点:appendchild
12.追加得到某个节点前:insertBefore
13.创建元素节点:createElement
14.节点克隆:cloneNode
15.删除子节点:removeChild

4.变量的生命周期是什么?

分为三个阶段:
1.声明阶段:在作用域中注册一个变量
2.初始化阶段:分配内存,给作用域中的变量创建绑定,在这个阶段变量自动的被初始化为 undefined
3.赋值阶段:给已经初始化过的变量赋值

5.简单说一下什么是函数提升

Varfunction 可以先调用,后声明
letconst 只能先声明,后使用

6.简述原型对象、构造函数、实例对象三者之间的关系

1.构造函数通过 prototype 指向原型对象
2.原型对象通过 constructor 指向构造函数
3.实例对象通过 __proto__ 指向原型对象

7.什么是回调地狱?以及如何解决回调地狱

大量使用回调函数进行异步操作,出现多层嵌套,形成横向金字塔,称为回调地狱。
1.Promise:导入fs模块,需要创建promise实例对象
2.then-fs:使用 then-fs 模块
3.asyncawait:使用 then-fs 模块,利用async修饰函数,await返回then()里面回调函数的参数 res