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

120

posted @ 2022-02-13 18:36  Gurad-your-heart  阅读(55)  评论(0)    收藏  举报