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  阅读(67)  评论(0)    收藏  举报