JS面试题集合
B站JS面试题合集
| JS的拷贝 | 和原数据是否指向同一对象 | 第一层数据为一般数据类型 | 第一层数据不是原始数据 |
|---|---|---|---|
| 赋值 | 是 | 改变会使原始数据一同改变 | 改变会使原数据一同改变 |
| 浅拷贝 | 否 | 改变不会使原数据一同改变 | 改变会使原始数据一同改变 |
| 深拷贝 | 否 | 改变不会使原始数据一同改变 | 改变不会使原始数据一同改变 |
防抖函数函数理解和实现
当持续触发事件 一定时间内没有再次触发事件 事件处理函数才会执行一次 如果设定的时间到来之前 又一次触发了事件 就重新开始延时
触发事件 一段时间内 没有触发 事件执行 肯定是定时器
节流函数
当持续触发事件的时候 保证一段时间内 只调用一次事件处理函数 一段时间内 只做一件事
setTimeout setInterval 区别
setInteval定时调用 clearInterval() 用于取消setInteval()函数设定的定时执行操作
settimeout 为0有什么用
js是单线程的,基于事件循环的 setTimeout函数是异步的,异步的事件会加入一个队列,会等到当前同步的任务执行完毕后,再执行setTimeout队列的任务,所以,通过设置任务在延迟0毫秒后执行,可以改变执行的先后顺序,延迟该任务发生,改变它所调用的函数的优先级,使之异步执行。
js 事件循环机制event-loop
function func1(){
console.log(1)
}
function func2(){
setTimeout(()=>{
console.log(2)
},0)
func1()
console.log(3)
}
func2()
当其执行的时候 func2 进入调用栈 首先 会将settimeout中的2 放入 消息队列 接着执行 func1() 输出1 接着 输出 3 最后再执行消息队列里的 2 最终结果为 1 3 2
var p=new Promise(reslove=>{
console.log(4);
reslove(5)
})
function func1(){
console.log(1);
}
function func2(){
setTimeout(() => {
console.log(2);
}, 0);
func1()
console.log(3);
p.then(reslove=>{
console.log(reslove);
})
}
func2()
js中的宏任务和微任务
事件循环EventLoop
喜欢阳光,更喜欢你~


浙公网安备 33010602011771号