闭包优缺点【防抖和节流,以及应用场景】

是什么

一句话:闭包是指有权访问另一个函数作用域中变量的函数

使一个函数能访问另一个函数作用域中的变量

闭包优缺点

  • 使用闭包的优点是可以避免全局变 量污染,延长变量生命周期。

  • 缺点是由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在低版本IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除

防抖和节流,以及应用场景

简述:

(1)防抖:就是将一段时间内连续的多次只会执行最后一次触发。

(2)节流:减少一段时间内触发的频率

场景:

防抖:earch搜索联想,用户在不断输入值时或者登录时点击按钮

节流:鼠标拖拽

柯里化

柯里化是一个函数,它一次接受一个参数,并返回一个新函数,该函数期待下一个参数,利用闭包的原理。它是一种函数转换,将 f(a,b,c) 转换为可以被以 f(a)(b)(c) 的形式进行调用。

优点:

  • 可以把函数式编程变得简洁,没有冗余。

  • 可以将函数作为返回值输出,提前返回。

纯函数

1.返回值只和函数参数有关,与外部无关。无论外部发生什么样的变化,函数的返回值都不会改变

2.函数内部创建的变量。进行修改则不会产生副作用

总结:简单的说就是一个函数的返回结果只依赖其参数,并且执行过程中没有副作用。

作用域

所谓作用域就是变量可作用的范围

作用域链

在函数嵌套下,由内向外的链式规则就叫作用域链

事件轮询(Event Loop)

  • JS是单线程的,即同一时间只能执行一个任务

  • 在JS中,任务分为同步任务和异步任务

    1. 同步任务:在主线程上执行的,形成一个执行栈,前一个任务执行完后执行后一个任务

      • 比如for循环,事件绑定,Dom...

    2. 异步任务:通过回调函数实现在做任务的同时还能做其他任务

      • 比如定时器的回调,ajax的回调,事件函数

  • 异步任务又分为宏任务和微任务

    • 宏任务:setTimeout,setInterval,ajax,dom事件监听...

    • 微任务:promise,.then,async/await...

      执行过程

      • 优先执行同步任务,遇到异步任务推入任务队列中,等同步任务执行完再执行任务队列中的异步任务,异步任务中又分宏任务和微任务,先执行微任务,再执行宏任务

Ajax原理是什么?实现步骤?

通过 XmlHttpRequest 对象来向服务器发异步请求,从服务器获得数据,然后⽤ JavaScript 来操作 DOM ⽽更新⻚⾯。

步骤:

  1. 创建XMLHttpRequest对象,即创建一个异步调用对象.

  2. 创建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息.

  3. 设置响应HTTP请求状态变化的函数.

  4. 发送HTTP请求.

  5. 获取异步调用返回的数据.

猜你喜欢

转载自blog.csdn.net/jiangshen_a/article/details/126939413