闭包 1.返回值是一个函数 2.返回函数使用函数外面定义的局部变量
    闭包的好处:不会造成全局污染

    1. <body>
    2. <input type="text" name="" id="input">
    3. <script>
    4. var input=document.querySelector('#input')
    5. input.addEventListener("keyup",debounce(()=>{
    6. console.log(input.value);
    7. }))
    8. function debounce(fn,delay=500){
    9. let timer=null;
    10. return function(){
    11. if(timer){
    12. clearTimeout(timer)
    13. }
    14. timer =setTimeout(fn,delay)
    15. }
    16. }
    17. </script>
    18. </body>
    1. <body>
    2. <button id="btn">btn</button>
    3. <script>
    4. var btn=document.querySelector('#btn')
    5. btn.addEventListener('click',debounce(function(){
    6. console.log(this.id);
    7. }))
    8. function debounce(fn,delay=500){
    9. let timer=null;
    10. return function(){
    11. if(timer){
    12. clearTimeout(timer)
    13. }
    14. timer= setTimeout(()=>{
    15. fn.call(this);
    16. },delay)
    17. }
    18. }
    19. </script>
    20. </body>