
获得徽章 7
- 请教一个react优化问题,我们可以在shouldComponentUpdate中这样比较来避免重新渲染数据吗?比如我们通过JSON.stringify(),比较state数据
shouldComponentUpdate(nextProps, nextState) {
if(JSON.stringify(nextState) == JSON.stringify(this.state)){
return false
}
return true
}展开赞过393 - # 每天一道前端面试题 # 考察promise和setTimeout执行顺序,请问以下输出什么
const promise = new Promise((resolve, reject) => {
console.log(1)
resolve()
console.log(2)
})
promise.then(() => {
console.log(3)
})
setTimeout(()=>{
console.log(5)
}, 0)
console.log(4)
答案: 1, 2, 4, 3, 5, 原因是Promise new的时候会立即执行里面的代码 .then里面的是微任务,是异步,会等同步任务执行完再执行, setTimeout是宏任务 也是异步,但它在微任务之后执行展开赞过22 - # 每天一道前端面试题 # 请实现reduce方法
自己的思考:
// 第一个参数是回调函数,第二个是是否有初始值
Array.prototype.myReduce = function (callback, initialValue) {
const array = this
let acc = initialValue || array[0]
const startIndex = initialValue ? 0 : 1
// 循环迭代数组array,并把每次调用callback函数算出新的结果传入下一次for循环
for (let i = startIndex; i < array.length; i++) {
const cur = array[i]
acc = callback(acc, cur, i, array)
}
return acc
}展开赞过评论3