前端-JS

1|0JS

1|0闭包

  • 闭包的应用:

    • 实现数据的私有
  • 内存泄漏

    • 内存泄漏指任何对象在您不再拥有或需要它之后仍然存在
  • 闭包=内层函数+引用的外层函数变量

    const outer=()=>{ const a = 1 const f=()=>{ console.log(a) } f() } outer() 通常会再使用一个函数包裹住闭包结构,以起到对变量保护作用
  • 外部如果想要使用闭包的变量,则需要return

    function count(){ let i = 0 function fn(){ i++ console.log(`'函数被调用了${i}次'`) } return fn } const fun = count() fun() i=100 //从外部修改i无法修改,因为i是函数私有的
  • 内存泄漏

    以下代码谁存在内存泄漏?count变量

    • result是一个全局变量,代码执行完毕不会立即销毁
    • result使用fn函数
    • fn用到fun函数
    • fun函数里面用到count
    • count被引用就不会被回收,所以一直存在

    此时,闭包引起内存泄漏

    function fn(){ let count = 0 function fun(){ count++ console.log(`'函数被调用了${count}次'`) } return fun } const result = fn() result() result() result()

1|0JavaScript 实现冒泡排序

//升序 function sort(items){ for (var i = 0; i < items.length; i++) { for (var j = 0; j < items[i].length-i; j++) { if (items[j]>items[j]+1) { var c=items[i] items[j+1] = items[j] items[j+1] = c } } } return items.toString() }

1|0JS 里垃圾回收机制

  • JS 的垃圾回收机制是为了以防内存泄漏
  • JS 中最常见的垃圾回收方式是标记清除

1|0js 如何处理防抖和节流

  • 函数防抖(debounce):当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始延时,如下,持续触发 scroll 事件时,并不执行handle函数,当1000毫秒内没有触发scroll事件时,才会延时触发scroll事件
function debounce(fn, wait) { var timeout = null; return function () { if (timeout !== null) clearTimeout(timeout); timeout = setTimeout(fn, wait); } } // 处理函数 function handle() { console.log(Math.random()); } window.addEventListener('scroll', debounce(handle, 1000)); //主要用于表单输入input
  • 函数节流(throttle):当持续触发事件时,保证一定时间段内只调用一次事件处理函数 节流通俗解释就比如我们水龙头放水,阀门一打开,水哗哗的往下流,秉着勤俭节约的优 良传统美德,我们要把水龙头关小点,最好是如我们心意按照一定规律在某个时间间隔内 一滴一滴的往下滴 如下,持续触发 scroll 事件时,并不立即执行 handle 函数,每隔 1000 毫秒才会执行一次 handle 函数

    var throttle = function (func, delay) { var prev = Date.now(); return function () { var context = this; var args = arguments; var now = Date.now(); if (now - prev >= delay) { func.apply(context, args); prev = Date.now(); } } } function handle() { console.log(Math.random()); } window.addEventListener('scroll', throttle(handle, 1000)) //主要用于表单提交
  • 函数防抖:将几次操作合并为一此操作进行。原理是维护一个计时器,规定在 delay 时间后 触发函数,但是在 delay 时间内再次触发的话,就会取消之前的计时器而重新设置。这样一 来,只有最后一次操作能被触发

  • 函数节流:使得一定时间内只触发一次函数。原理是通过判断是否到达一定时间来触发函数


__EOF__

本文作者凉宫春日大胜利
本文链接https://www.cnblogs.com/HaruhiSuzumiya/p/16774966.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   凉宫春日大胜利  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示