JavaScript防抖节流

简介: JavaScript防抖节流

闭包

父函数中,返回的子函数

JS

1
2
3
4
5
6
7
8
9
10
11
var str= '我是大帅哥'
var OBJ= {
str:'hello world',
getData:function(){
returnfunction(){
returnthis.str
           }
       }
 }
console.log(OBJ.getData()())

输出结果为: 我是大帅哥

原因: this的指向是,由它所在函数 调用的上下文决定的,而不是由它所在函数定义的上下文决定的。function fn(){}箭头函数()=>{}中的this,是由它所在函数 定义的上下文决定的。

JS

1
2
3
4
5
6
7
8
functionfn1{}{
let n=123;
returnfunction(){
console.log(n)
}
}
let f1=fu1{}
f1{}

f1保存的是return function(){console.log(n)}这个匿名函数所在堆地址的引用,并不是赋值。

函数防抖

函数防抖(debounce):当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始延时。

HTML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<body>
<inputtype="text"name=""id="">
<inputtype="submit"name=""id="input">
<script>
var btn =document.getElementById('input')
   btn.addEventListener('click',debounce(submit,2000),false)/
functionsubmit(){
console.log(11)
   }
functiondebounce(fn,timer){
var t =null
returnfunctionbtnevent(){
var firstClick =!t
if(t){clearTimeout(t)}
if(firstClick){
            fn.apply(this,arguments)}
            t= setTimeout(()=>{
                t=null;
            },timer)
       }
   }
</script>
</body>

节流

函数节流(throttle):当持续触发事件时,保证一定时间段内只调用一次事件处理函数。节流通俗解释就比如我们水龙头放水,阀门一打开,水哗哗的往下流,秉着勤俭节约的优良传统美德,我们要把水龙头关小点,最好是如我们心意按照一定规律在某个时间间隔内一滴一滴的往下滴。

通过设置时间戳

HTML

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<body>
<inputtype="text"name=""id="">
<inputtype="submit"name=""id="input">
<script>
var btn =document.getElementById('input')
  btn.addEventListener('click',throttle(submit,2000),false)
functionsubmit(){
console.log(this)
  }
functionthrottle(fn,delay){
var begin = 0
returnfunction(){
var cur = newDate().getTime()
if(cur - begin > delay){
        fn.apply(this,arguments);
                begin=cur;
    }
    }
  }
</script>
</body>

目录
相关文章
|
6月前
|
前端开发 JavaScript Java
【JavaScript】JavaScript 防抖与节流:以游戏智慧解锁实战奥秘
【JavaScript】JavaScript 防抖与节流:以游戏智慧解锁实战奥秘
73 3
|
3月前
|
前端开发 JavaScript UED
JavaScript防抖和节流的使用及区别
JavaScript防抖和节流的使用及区别
112 57
|
6月前
|
JavaScript 前端开发 UED
深入理解JavaScript中的节流与防抖技术
理解并合理运用节流与防抖技术,可以帮助我们优化事件处理函数的执行频率,从而提升应用的性能和用户体验。这两种技术通过减少不必要的计算和DOM操作,使得Web应用程序能够更加流畅地运行。 通过掌握防抖和节流的实现原理及应用场景,开发者可以更加灵活地编写高效且性能优化的代码,对于面对高频事件处理时尤其重要。在开发中合理选择使用防抖或节流,将直接影响到应用的响应性和效率。
67 1
|
2月前
|
前端开发 JavaScript UED
JavaScript 中的函数防抖与节流详解及实用场景
在前端开发中,处理用户频繁触发的事件,如输入框的输入、按钮点击、窗口调整大小等,常常需要优化性能以减少无效操作。为此,函数防抖(debounce)和函数节流(throttle)是两种常见的性能优化手段。本文将详细介绍两者的区别与实现,并探讨它们的应用场景。
52 1
|
3月前
|
JavaScript 前端开发
js防抖函数返回值问题解决方案
本文介绍了如何在JavaScript中创建一个带有返回值的防抖函数,通过结合Promise来实现。这种防抖函数可以在事件触发一定时间后再执行函数,并能处理异步操作的返回值。文章提供了防抖函数的实现代码和如何在实际项目中使用该防抖函数的示例。
43 1
|
4月前
|
JavaScript 前端开发 UED
JS 防抖与节流
防抖和节流是优化高频事件处理的技术。针对如`scroll`、`resize`等频繁触发的事件,它们能有效减少不必要的回调执行,节省资源。防抖确保在一段时间内仅执行最后一次操作,适用于输入框自动补全等场景;而节流则按固定间隔执行函数,适合拖拽、滚动事件。通过简单的JavaScript实现,可以显著提升应用性能和用户体验。
42 1
JS 防抖与节流
|
7月前
|
JavaScript 前端开发 UED
js的防抖节流
js的防抖节流
41 1
|
7月前
|
JavaScript 前端开发 UED
js的节流
js的节流
38 0
|
7月前
|
测试技术
js_防抖与节流(闭包的使用)
js_防抖与节流(闭包的使用)
51 0
|
7月前
|
JavaScript
JS中防抖和节流的区别是什么
JS中防抖和节流的区别是什么
53 0