前端面试题
一.谈一谈闭包:
1.什么是闭包:
- 闭包是一个父函数返回一个子函数,子函数内部访问父函数的标识(形参,变量)就会创建闭包
2.闭包的优点:
- 创建一个闭包能够防止函数内部定义的变量被全局的变量污染造成冲突,延长变量的使用生命周期
- 私有化标识,使得原本应该被销毁的数据得到保存,延展了作用域
3.闭包的缺点:
二.原型和原型链:
1.什么是原型:
- 1.1每一个函数的prototype都指向一个原型,这个原型是一个对象,所以也叫原型对象
2.原型对象的作用:
- 2.1 在原型对象上面可以存放一些公共的属性和方法
- 2.2 我们可以使用原型来实现继承
3.什么是原型链:
- 3.1 每一个对象的__proto__都指向一个原型对象
- 3.2 当一个对象调用一个属性或者方法的时候,如果自身找不到,就会去__proto__所指向的原型对象上面去查找,如果原型对象上面也没有,就会去原型对象的原型上面查找
- 3.3 这种一级一级向上查找的链式操作就叫原型链
三.递归
1.什么是递归:
- 1.1 递归就是在函数的内部调用自身
- 1.2 调用栈,函数的执行栈 - 后进的先出,先进的后出
- 1.3 如果使用递归的时候不做条件限制,导致调用栈只进不出,会造成爆栈
2.递归造成的原因:
- 2.1 递归并不是计算机不能处理大量的运算,而是不能同时处理大量的运算