2021 web面试题常见之一 防抖和节流02

2021-08-18  本文已影响0人  litielongxx

防抖和节流

作为考量代码是否注重优化,可以很强的探知技术深度和个人否追求web性能优化,以及更好的用户体验web职责。
防抖类似延后处理函数,(原定的一直被打断,有点像鬼畜的抽风),节流类似稀释不多解释。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h3>防抖:实时搜索</h3>
    <div><input style="width:300px" type="text" placeholder="请输入12345678再删除搜索12345"></div>
    <textarea cols="50" rows="15">
       document.querySelector('input').addEventListener('input',function(){
           console.log(1)
       })
    </textarea>
    <button>点击执行</button>
    <h3>防抖:实时搜索优化版</h3>
    <div><input style="width:300px" type="text" placeholder="请输入12345678再删除去搜索12345"></div>
    <textarea cols="50" rows="15">
        <!-- 定时器 -->
       let timer;
       document.querySelectorAll('input')[1].addEventListener('input',function(){
           <!-- 打断预期的执行延后,所以叫debounce防抖 -->
           <!-- 自定义500ms -->
           clearInterval(timer)
           timer=setTimeout(()=>{
            <!-- 把原本要做的事延后处理 -->
            console.log(2)
           },500)
       })
    </textarea>
    <button>点击执行</button>
    <h3>
        节流
    </h3>
    <textarea cols="50" rows="15">
        <!-- 指定时间端触发,减少代码的执行频率 -->
        setInterval(()=>{
            window.onscroll=function(){
                console.log(3)
             }
        },1000)
    </textarea>
    <button>点击执行</button>
</body>
<script>
    // 点击button执行pre中的代码,用到eval
    document.querySelectorAll('button').forEach(function(item){
        item.addEventListener('click',function(){
            // 不用箭头函数因为要指向事件点击源,用了()=>变成window了
            // console.log(this.previousElementSibling.value);
            eval(this.previousElementSibling.value)
        })
    })

   
</script>
</html>
上一篇 下一篇

猜你喜欢

热点阅读