每天十到面试题

1 - JS的数据类型
值类型 : 字符串(String),数字(Number),布尔(Boolean),对空(Null),未定义(Undefined),Symbol.
引用类型 : 对象(Object),函数(Function),数组(Array)
2 - JS中的继承
1-原型链的继承
2-借用构造函数(经典传承)
3-组合继承
4-原型式继承
5-寄生式继承
6-寄生组合式继承
3 - 闭包的理解
1-理解 : 闭包就是能够读取其他函数内部变量的函数
2-作用 : 必报的应用场景有很多,但是最大的用处有两个,一个就是读取函数内部的变量,另一个则是让这些变量的值都始终保存在内存中!
4 - 如何判断this的指向
1-以函数的形式调用时,this永远都指向window
2-以方法的形式调用,this式调用方法的那个对象
3-以构造函数的新式调用时,this是新创建的那个对象
4-使用call和apply调用时,this是指定的那个对象
5-箭头函数的this看外层是否有函数 如果有,外层函数的this就是内部箭头函数的this 如果没有, 就是window
5 - call apply和bind的使用
**共同点** : 都可以改变this的指向
**不同点** : 1-call和apply可以调用函数 并且改变函数内部this的指向.
2-call和apply的传递的参数不同,call传递的参数使用逗号隔开,apply使用数组传递
3-bind不会调用函数,但是可以改变this的指向
6-什么是回调地狱?`
理解 : 就是函数作为参数的层层嵌套
办法 : 1-保持代码的简短 2-模块化(函数封装,打包,保持每个功能的独立)3-处理每一个错误4-创建模块时的一些经验法则5promis承诺/生成器/ES6等
7 - promis的使用过
理解 : promise的构造函数接收一个参数,是函数,并且传入两个参数 : resolve,reject,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数
可以在then方法中接续写promise对象并返回,继续用then来进行回调操作.
8 - new的背后做了哪些事
1-创建了一个空的JS对象
2-将空对象的原型prototype执行构造函数的原型
3-将空对象作为构造函数的上下文(改变this指向)
4-对构造函数有返回值的判断
9-防抖和节流的理解
**防抖**: 持续触发,只执行最后一次
(n秒内只运行一次,且只有一次生效)
**防抖**: 持续触发,规定时间内只执行一次
(n秒后执行该事件,重复触发则重新计时)
10 - 高阶函数
高阶函数时对其他函数进行操作的函数,操作可以是将他们作为参数,或者是返回他们.
高阶函数是一个(接收)函数作为参数或将函数作为输出返回的函数.