js几个面试题

68 阅读1分钟

面试题总结 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不会调用函数,返回一个新的函数需要手动调用