JavaScript 是前端领域里功能强大的编程语言,它也是现代 Web 开发的主要语言之一。 作为一名开发人员,拥有一组方便的 JavaScript 函数片段可以提高您的工作效率,并使您能够编写更清晰、更高效的代码。
在今天这篇文章中,我们将探讨一些非常有用的 JavaScript 函数片段,希望对您有用。
【资料图】
生成特定范围内的随机整数,是 JavaScript 应用程序中的常见需求。 randomIntInRange 函数允许您在给定的最小和最大范围内生成随机整数。
function randomIntInRange(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min;}
通过利用 Math.random 函数返回 0(含)和 1(不含)之间的随机数,并应用适当的缩放和舍入,randomIntInRange 生成指定范围内的随机整数。
02、formatBytes将文件大小从字节转换为人类可读的格式(例如,千字节、兆字节)是 Web 应用程序中的一项常见任务。 formatBytes 函数将给定数量的字节转换为人类可读的字符串表示形式。
function formatBytes(bytes) { if (bytes === 0) { return "0 Bytes"; } const k = 1024; const sizes = ["Bytes", "KB", "MB", "GB", "TB"]; const i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];}
formatBytes 函数通过将输入字节除以 1024 的幂来处理不同大小的字节。然后它根据计算出的大小从 sizes 数组中选择适当的单位。 使用 toFixed(2) 将结果值格式化为两位小数,并在其后附加单位。
03、formatDate使用日期和时间是 Web 开发中的常见要求。 formatDate 函数提供了一种将 JavaScript Date 对象格式化为所需字符串表示形式的便捷方法。
function formatDate(date, format) { const options = { year: "numeric", month: "long", day: "numeric" }; return date.toLocaleDateString(format, options);}
formatDate 函数将 Date 对象和格式字符串作为输入。 在此示例中,我们使用 toLocaleDateString 方法根据指定选项格式化日期。
通过为“年、月和日”指定选项,我们可以自定义结果字符串的格式。 您可以修改选项以满足您的特定格式要求。
04、capitalize将字符串的首字母大写是一个简单的格式化任务,经常出现在 JavaScript 应用程序中。 capitalize 函数将给定字符串的第一个字母大写,同时保留字符串的其余部分。
function capitalize(str) { return str.charAt(0).toUpperCase() + str.slice(1);}
capitalize 函数使用 charAt(0) 提取字符串的第一个字符,使用 toUpperCase() 将其转换为大写,然后使用 slice(1) 将其与字符串的其余部分连接起来。 这导致原始字符串的大写版本。
05、scrollToTop滚动到网页顶部是一种常见的交互方式,尤其是在存在长内容的场景中。 scrollToTop 函数将页面平滑地滚动到顶部位置。
function scrollToTop() { window.scrollTo({ top: 0, behavior: "smooth" });}
scrollToTop 函数利用窗口对象的 scrollTo 方法滚动到顶部位置。 通过将顶部值设置为 0 并将行为指定为“平滑”,页面可以平滑地滚动到顶部。
06、once在某些情况下,您希望某个功能只执行一次,类似于您使用 onload 事件的方式。 once 函数确保给定函数只被调用一次,防止重复初始化或执行。
function once(callback) { let executed = false; return function() { if (!executed) { executed = true; callback(); } };}
要使用 once 函数,请将所需函数作为回调传递。 然后可以调用返回的函数,它将确保回调仅在第一次调用时执行。
07、truncateString有时,您可能需要将字符串截断到特定长度并在末尾添加省略号 (...) 以指示截断。 truncateString 函数将给定的字符串截断为指定的最大长度,并在必要时附加省略号。
function truncateString(str, maxLength) { if (str.length <= maxLength) { return str; } return str.slice(0, maxLength) + "...";}
truncateString 函数检查字符串的长度是否小于或等于指定的 maxLength。 如果是这样,它将按原样返回原始字符串。 否则,它使用 slice 提取字符串的一部分,从开头到 maxLength 并附加省略号以指示截断。
08、isNative在某些情况下,了解给定功能是否是本机功能至关重要,尤其是在决定是否覆盖它时。 isNative 函数允许您确定一个函数是否是原生的或者它是否已经在 JavaScript 中实现。
function isNative(fn) { return /\[native code\]/.test(fn.toString());}
isNative 函数利用正则表达式来检查函数的字符串表示形式。 如果函数的源代码包含短语“[native code]”,则表示该函数是浏览器原生的,而不是在 JavaScript 中实现的
09、debouncePromise有时您可能需要消除异步操作,例如进行 API 调用或处理用户输入。 debouncePromise 函数提供了一种去抖动Promise的方法,确保只执行最后一次调用。
function debouncePromise(fn, delay) { let timeoutId; return function (...args) { return new Promise((resolve, reject) => { clearTimeout(timeoutId); timeoutId = setTimeout(async () => { try { const result = await fn(...args); resolve(result); } catch (error) { reject(error); } }, delay); }); };}
debouncePromise 函数采用基于Promise的函数 (fn) 和延迟作为参数。 它返回一个将原始函数包装在Promise中的去抖动函数。 该函数使用 setTimeout 对调用进行去抖动,确保在指定延迟后仅执行最后一次调用。 它根据包装函数的结果解决或拒绝承诺。
10、memoizememoize化是一种用于缓存昂贵函数调用的结果并为后续调用检索它们的技术。 memoize 函数提供了一种通用方法来记忆任何具有不同参数的函数。
function memoize(fn) { const cache = new Map(); return function (...args) { const key = JSON.stringify(args); if (cache.has(key)) { return cache.get(key); } const result = fn(...args); cache.set(key, result); return result; };}
memoize 函数使用 Map 对象创建缓存。 它返回一个包装函数,检查当前参数的结果是否存在于缓存中。 如果是,它会检索并返回缓存的结果。 否则,它将使用参数调用原始函数,将结果存储在缓存中并返回。 使用相同参数的后续调用将检索缓存的结果,而不是重新计算它。
11、insertRule在处理动态和大量使用 AJAX 的网站时,将样式应用于多个元素可能效率低下且麻烦。 insertRule 函数提供了一种更有效的方法,它允许您为选择器定义样式,类似于您在样式表中的做法。
function insertRule(selector, style) { const styleSheet = document.styleSheets[0]; if (styleSheet.insertRule) { styleSheet.insertRule(`${selector} { ${style} }`, 0); } else if (styleSheet.addRule) { styleSheet.addRule(selector, style, 0); }}
要使用 insertRule 函数,请提供所需的选择器和样式作为参数。 该函数将在文档中找到的第一个样式表中插入一个新规则,确保指定的样式应用于与选择器匹配的所有元素。
结论请记住定制这些片段以适合您的项目需求和编码风格。 对它们进行试验、组合,并在它们的基础上进行构建,以创建更强大的自定义功能。
最后,感谢您的阅读,希望对您有所帮助!
标签:
JavaScript是前端领域里功能强大的编程语言,它也是现代Web开发的主要
近日,集美几所公办幼儿园、普惠性幼儿园开放招生摸底且不限户口,有需
KeepMoving保持·热爱通过“以调促和”青羊法院一次性实质化解一起小微
期待已久的梦中的那片海于近日才刚刚播出,但在宣传阶段就已经引起了广
e公司讯,发改委:根据近期国际市场油价变化情况,按照现行成品油价格
他们走出“毕业门”,直通“大学门”潮新闻客户端记者陈素萍又是一年毕
作为大家熟知的艺人明星,黄晓明也为大家带来了不少名梗,在网络随便搜
各位考生:玉溪市2023年市直事业单位公开选调工作人员笔试成绩已公布,
成渝双城记,谁才是西南第一“顶流”,顶流,成都,重庆市,经济实力,成渝
多模智能终端防爆对讲机是一种高效、安全和可靠的通信工具,它采用了先
代言人阿隆·戈登助掘金摘得NBA总冠
6月13日,丹佛掘金以94:89击败迈阿密热火,大比分4:1拿下2022-2023赛
世界最资讯丨2023年南海“村BA”来了
2023年南海“村BA”来了!从“村BA”看乡村文化振兴的底层逻辑两部门印
燃亮微“星”愿 星孩集体过生日
“星孩”们度过了一个欢乐的集体生日昨日,“我为群众办实事”暨“我为
为什么律师都怕虚假诉讼?律师为虚假
为什么律师都怕虚假诉讼?因为虚假诉讼是违法行为。律师有的时候自己出庭,委托人将相关证据交给律师。律师并不知道此证据是虚假证据。如果
生物无机化学原理_关于生物无机化学
生物无机化学原理,关于生物无机化学原理介绍这个很多人还不知道,我们
泉州“傀儡调”参加全国民族器乐展演
日前,全国民族器乐展演首场民间乐种组合展演在河北省廊坊市举行,泉州
今日热议:美媒:医生罢工致医院将面
据美国彭博新闻社网站6月13日报道,在最近一场围绕薪酬和工作条件的争
虚假诉讼的六种表现有哪些?为什么法
虚假诉讼的六种表现有哪些?1 故意利用打官司来敲诈勒索金钱或者其他利益。2 编造或夸大事实、证据和捏造伪造证据,以达到欺骗法院和故意误
民事诉讼提供虚假的证据怎么处罚?法
民事诉讼提供虚假的证据怎么处罚?《中华人民共和国民事诉讼法》伪造证据的法律后果:(1)作伪证情节较轻的不追究刑事责任,但会受到罚款或者
证据必须在开庭前全部提交吗?法院为
证据必须在开庭前全部提交吗?如果法院指定了举证期限,即向你送达了《举证通知书》,举证通知书载明了举证期限,那么你应在举证期限届满之
民事案件开庭时间一般几个小时?庭审
民事案件开庭时间一般几个小时?法院审理案件的开庭时间是没有具体规定的,根据案件的复杂程度来确定,一般情况两个小时左右的时间可以审理
硬屏与软屏的优劣(硬屏和软屏的区别
来为大家解答以上问题,硬屏与软屏的优劣,硬屏和软屏的区别很多人还不
环球通讯!2023年6月北京经开区公租
1 分组规则本次配租登记家庭分为两组,分别为第一组、第二组。具体为:
央行:5月份人民币存款增加1.46万亿
央行数据显示,5月份人民币存款增加1 46万亿元,同比少增1 58万亿元。
方方土是什么梗 方方土
1、堃,读作kūn,是坤的异形字,意义同“坤”(多用于人名)。2、拼音
黄晓明之歌好想你是什么梗|热闻
作为大家熟知的艺人明星,黄晓明也为大家带来了不少名梗,在网络随便搜
全球观天下!如何去除地板砖上的污渍
相信大家对如何去除地板砖上的污渍,怎样去除地板砖上的污渍的问题都很
泰国小香猪到底会不会长很大?泰国小
泰国小香猪到底会不会长很大?泰国小香猪也是会长大的,只不过比普通的猪体型要小很多,生长速度也很慢。它出生时只有400多克,因为采用了基
碰了含羞草没洗手会中毒吗?含羞草为
碰了含羞草没洗手会中毒吗?如果摸了含羞草之后及时清洗是不会中毒的,偶尔一两次也没有什么影响,只要没有弄断它并摸到汁液。含羞草的整个植
含羞草的神奇之处及原因是什么?含羞
含羞草的神奇之处及原因是什么?含羞草的神奇之处及原因:能够预测天气,触碰叶子会很快闭合,闭合缓慢说明天气转晴,闭合较慢说明天气转阴
小手拉大手•百年树木 成都市古树名
2023年6月13日,距离第31届世界大学生夏季运动会还有45天,为助推“爱
粉蒸肉要蒸多久才能蒸熟?粉蒸肉是冷
粉蒸肉要蒸多久才能蒸熟?粉蒸肉蒸熟的话大概需要一个小时左右,但是要想要将粉蒸肉做得好吃,就要多蒸一段时间,时间越久越好。所谓是一熟生百
当前时讯:厦门公共场所AED超千台
厦门市红十字会培训师现场进行急救培训。记者陈理杰摄昨日上午,在中国
生物数学趋化现象及相关偏微分方程的
生物数学趋化现象及相关偏微分方程的若干问题,关于生物数学趋化现象及
荷兰猪怎么区分公母?荷兰猪一窝能产
荷兰猪怎么区分公母?生殖器不同:公的荷兰猪下面会有突出在外的生殖器,而母的荷兰猪没有。大小不同:在年龄相同的情况下,公的荷兰猪会比