面试题总结 1深拷贝和浅拷贝的区别
B复制了A,当修改A时,如果B也跟着A进行改变,说明这是浅拷贝,如果B没改变,那就是深拷贝。
基本数据类型都是深拷贝,复合数据类型基本上都是浅拷贝。
解决方法:1)一维数组可以使用for循环或者...展开数组,然后赋值,可以解决浅拷贝问题
2)a.多维数组可以使用JSON方法解决,JSON.parse() 和JSON.stringify;
b.可以使用递归进行解决
2什么是递归函数
如果一个函数在内部调用自身本身,这个函数就是递归函数。
特点:1)递归要有最终的一个出口 2)有进有出 3)先进后出
3 js的this指向问题
1)在全局范围内使用this ,它将指向全局对象(浏览器中为 window);
2)在普通函数中,this指window对象。
3)箭头函数中,没有this指向,因此向箭头函数外层寻找,谁定义了箭头函数,this就是谁
4)谁触发的事件,this就是谁
5)在对象中,this就是对象本身
6)定时器中,this指window对象
7)弹窗中。this指window对象
4 call,apply,bind的区别
相同
call(),apply(),bind()方法,都会改变this指向
不同
1)call和apply,都是用来调用函数,而且是立即调用,但传递值的方式不同,call的参数需要逐个列举,apply的参数需要通过数组的形式传递,但接收值时仍是一个一个的接收。
2)bind和call,apply的不同点,bind不会调用函数,返回一个新的函数需要手动调用