1、说下BFC
2、虚拟DOM优缺点,diff算法
3、forEach如何中止循环
4、说下es6 let var const 、es6数组新增的方法有哪些
5、react中setState是同步还是异步的
是否是同步更新的,取决于其执行环境。
setState 只在合成事件和生命周期函数中是“异步”的,在原生事件和 setTimeout 中都是同步的。
合成事件:就是react 在组件中的onClick等都是属于它自定义的合成事件
原生事件:比如通过addeventListener添加的,dom中的原生事件
setState的“异步”并不是说内部由异步代码实现,其实本身执行的过程和代码都是同步的
只是合成事件和钩子函数的调用顺序在更新之前,导致在合成事件和钩子函数中没法立马拿到更新后的值
形式了所谓的“异步”,当然可以通过第二个参数 setState(partialState, callback)
中的callback拿到更新后的结果。
setState 的批量更新优化也是建立在“异步”(合成事件、钩子函数)之上的
在原生事件和setTimeout 中不会批量更新,在“异步”中如果对同一个值进行多次 setState
setState 的批量更新策略会对其进行覆盖,取最后一次的执行
如果是同时 setState 多个不同的值,在更新时会对其进行合并批量更新。
6、说下重绘、回流
7、如何实现节流防抖
8、如何实现左边固定宽度、右边自适应
9、普通函数和箭头函数区别
箭头函数有几个使用注意点。
(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
(2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
(3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。
(4)不可以使用yield命令,因此箭头函数不能用作 Generator 函数。
上面四点中,第一点尤其值得注意。this对象的指向是可变的,但是在箭头函数中,它是固定的。
10、讲下闭包、闭包用途
11、
12、
// 4 1 3 6 2 5
13、项目中封装过什么常用的公共组件
14、promise实现原理