JavaScript 是前端領(lǐng)域里功能強(qiáng)大的編程語言,它也是現(xiàn)代 Web 開發(fā)的主要語言之一。 作為一名開發(fā)人員,擁有一組方便的 JavaScript 函數(shù)片段可以提高您的工作效率,并使您能夠編寫更清晰、更高效的代碼。
在今天這篇文章中,我們將探討一些非常有用的 JavaScript 函數(shù)片段,希望對(duì)您有用。
【資料圖】
01、randomIntInRange生成特定范圍內(nèi)的隨機(jī)整數(shù),是 JavaScript 應(yīng)用程序中的常見需求。 randomIntInRange 函數(shù)允許您在給定的最小和最大范圍內(nèi)生成隨機(jī)整數(shù)。
function randomIntInRange(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min;}
通過利用 Math.random 函數(shù)返回 0(含)和 1(不含)之間的隨機(jī)數(shù),并應(yīng)用適當(dāng)?shù)目s放和舍入,randomIntInRange 生成指定范圍內(nèi)的隨機(jī)整數(shù)。
02、formatBytes將文件大小從字節(jié)轉(zhuǎn)換為人類可讀的格式(例如,千字節(jié)、兆字節(jié))是 Web 應(yīng)用程序中的一項(xiàng)常見任務(wù)。 formatBytes 函數(shù)將給定數(shù)量的字節(jié)轉(zhuǎn)換為人類可讀的字符串表示形式。
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 函數(shù)通過將輸入字節(jié)除以 1024 的冪來處理不同大小的字節(jié)。然后它根據(jù)計(jì)算出的大小從 sizes 數(shù)組中選擇適當(dāng)?shù)膯挝弧?使用 toFixed(2) 將結(jié)果值格式化為兩位小數(shù),并在其后附加單位。
03、formatDate使用日期和時(shí)間是 Web 開發(fā)中的常見要求。 formatDate 函數(shù)提供了一種將 JavaScript Date 對(duì)象格式化為所需字符串表示形式的便捷方法。
function formatDate(date, format) { const options = { year: "numeric", month: "long", day: "numeric" }; return date.toLocaleDateString(format, options);}
formatDate 函數(shù)將 Date 對(duì)象和格式字符串作為輸入。 在此示例中,我們使用 toLocaleDateString 方法根據(jù)指定選項(xiàng)格式化日期。
通過為“年、月和日”指定選項(xiàng),我們可以自定義結(jié)果字符串的格式。 您可以修改選項(xiàng)以滿足您的特定格式要求。
04、capitalize將字符串的首字母大寫是一個(gè)簡單的格式化任務(wù),經(jīng)常出現(xiàn)在 JavaScript 應(yīng)用程序中。 capitalize 函數(shù)將給定字符串的第一個(gè)字母大寫,同時(shí)保留字符串的其余部分。
function capitalize(str) { return str.charAt(0).toUpperCase() + str.slice(1);}
capitalize 函數(shù)使用 charAt(0) 提取字符串的第一個(gè)字符,使用 toUpperCase() 將其轉(zhuǎn)換為大寫,然后使用 slice(1) 將其與字符串的其余部分連接起來。 這導(dǎo)致原始字符串的大寫版本。
05、scrollToTop滾動(dòng)到網(wǎng)頁頂部是一種常見的交互方式,尤其是在存在長內(nèi)容的場景中。 scrollToTop 函數(shù)將頁面平滑地滾動(dòng)到頂部位置。
function scrollToTop() { window.scrollTo({ top: 0, behavior: "smooth" });}
scrollToTop 函數(shù)利用窗口對(duì)象的 scrollTo 方法滾動(dòng)到頂部位置。 通過將頂部值設(shè)置為 0 并將行為指定為“平滑”,頁面可以平滑地滾動(dòng)到頂部。
06、once在某些情況下,您希望某個(gè)功能只執(zhí)行一次,類似于您使用 onload 事件的方式。 once 函數(shù)確保給定函數(shù)只被調(diào)用一次,防止重復(fù)初始化或執(zhí)行。
function once(callback) { let executed = false; return function() { if (!executed) { executed = true; callback(); } };}
要使用 once 函數(shù),請(qǐng)將所需函數(shù)作為回調(diào)傳遞。 然后可以調(diào)用返回的函數(shù),它將確保回調(diào)僅在第一次調(diào)用時(shí)執(zhí)行。
07、truncateString有時(shí),您可能需要將字符串截?cái)嗟教囟ㄩL度并在末尾添加省略號(hào) (...) 以指示截?cái)唷?truncateString 函數(shù)將給定的字符串截?cái)酁橹付ǖ淖畲箝L度,并在必要時(shí)附加省略號(hào)。
function truncateString(str, maxLength) { if (str.length <= maxLength) { return str; } return str.slice(0, maxLength) + "...";}
truncateString 函數(shù)檢查字符串的長度是否小于或等于指定的 maxLength。 如果是這樣,它將按原樣返回原始字符串。 否則,它使用 slice 提取字符串的一部分,從開頭到 maxLength 并附加省略號(hào)以指示截?cái)唷?/p>08、isNative
在某些情況下,了解給定功能是否是本機(jī)功能至關(guān)重要,尤其是在決定是否覆蓋它時(shí)。 isNative 函數(shù)允許您確定一個(gè)函數(shù)是否是原生的或者它是否已經(jīng)在 JavaScript 中實(shí)現(xiàn)。
function isNative(fn) { return /\[native code\]/.test(fn.toString());}
isNative 函數(shù)利用正則表達(dá)式來檢查函數(shù)的字符串表示形式。 如果函數(shù)的源代碼包含短語“[native code]”,則表示該函數(shù)是瀏覽器原生的,而不是在 JavaScript 中實(shí)現(xiàn)的
09、debouncePromise有時(shí)您可能需要消除異步操作,例如進(jìn)行 API 調(diào)用或處理用戶輸入。 debouncePromise 函數(shù)提供了一種去抖動(dòng)Promise的方法,確保只執(zhí)行最后一次調(diào)用。
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 函數(shù)采用基于Promise的函數(shù) (fn) 和延遲作為參數(shù)。 它返回一個(gè)將原始函數(shù)包裝在Promise中的去抖動(dòng)函數(shù)。 該函數(shù)使用 setTimeout 對(duì)調(diào)用進(jìn)行去抖動(dòng),確保在指定延遲后僅執(zhí)行最后一次調(diào)用。 它根據(jù)包裝函數(shù)的結(jié)果解決或拒絕承諾。
10、memoizememoize化是一種用于緩存昂貴函數(shù)調(diào)用的結(jié)果并為后續(xù)調(diào)用檢索它們的技術(shù)。 memoize 函數(shù)提供了一種通用方法來記憶任何具有不同參數(shù)的函數(shù)。
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 函數(shù)使用 Map 對(duì)象創(chuàng)建緩存。 它返回一個(gè)包裝函數(shù),檢查當(dāng)前參數(shù)的結(jié)果是否存在于緩存中。 如果是,它會(huì)檢索并返回緩存的結(jié)果。 否則,它將使用參數(shù)調(diào)用原始函數(shù),將結(jié)果存儲(chǔ)在緩存中并返回。 使用相同參數(shù)的后續(xù)調(diào)用將檢索緩存的結(jié)果,而不是重新計(jì)算它。
11、insertRule在處理動(dòng)態(tài)和大量使用 AJAX 的網(wǎng)站時(shí),將樣式應(yīng)用于多個(gè)元素可能效率低下且麻煩。 insertRule 函數(shù)提供了一種更有效的方法,它允許您為選擇器定義樣式,類似于您在樣式表中的做法。
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 函數(shù),請(qǐng)?zhí)峁┧璧倪x擇器和樣式作為參數(shù)。 該函數(shù)將在文檔中找到的第一個(gè)樣式表中插入一個(gè)新規(guī)則,確保指定的樣式應(yīng)用于與選擇器匹配的所有元素。
結(jié)論請(qǐng)記住定制這些片段以適合您的項(xiàng)目需求和編碼風(fēng)格。 對(duì)它們進(jìn)行試驗(yàn)、組合,并在它們的基礎(chǔ)上進(jìn)行構(gòu)建,以創(chuàng)建更強(qiáng)大的自定義功能。
最后,感謝您的閱讀,希望對(duì)您有所幫助!
標(biāo)簽:
JavaScript是前端領(lǐng)域里功能強(qiáng)大的編程語言,它也是現(xiàn)代Web開發(fā)的主要
近日,集美幾所公辦幼兒園、普惠性幼兒園開放招生摸底且不限戶口,有需
KeepMoving保持·熱愛通過“以調(diào)促和”青羊法院一次性實(shí)質(zhì)化解一起小微
期待已久的夢(mèng)中的那片海于近日才剛剛播出,但在宣傳階段就已經(jīng)引起了廣
e公司訊,發(fā)改委:根據(jù)近期國際市場油價(jià)變化情況,按照現(xiàn)行成品油價(jià)格
他們走出“畢業(yè)門”,直通“大學(xué)門”潮新聞客戶端記者陳素萍又是一年畢
作為大家熟知的藝人明星,黃曉明也為大家?guī)砹瞬簧倜#诰W(wǎng)絡(luò)隨便搜
各位考生:玉溪市2023年市直事業(yè)單位公開選調(diào)工作人員筆試成績已公布,
成渝雙城記,誰才是西南第一“頂流”,頂流,成都,重慶市,經(jīng)濟(jì)實(shí)力,成渝
多模智能終端防爆對(duì)講機(jī)是一種高效、安全和可靠的通信工具,它采用了先
規(guī)劃方案出爐!青島這里將建一座數(shù)字
近日,青島高新區(qū)發(fā)布凱豐阿里云創(chuàng)新中心項(xiàng)目規(guī)劃建筑方案。項(xiàng)目建設(shè)單
當(dāng)前動(dòng)態(tài):李滄交警:護(hù)航中考,與你
6月13日,青島市中考拉開大幕,李滄區(qū)共有考點(diǎn)7處。中高考期間,交警李
世界熱資訊!聚焦青島中考 | 殷殷守望
6月13日上午,青島市中考拉開序幕,上午的語文考試開始后,第62中學(xué)考
傳遞榜樣力量 市南區(qū)舉辦“中國好人
半島網(wǎng)6月13日訊(記者李京媛通訊員呂曉菲)傳遞榜樣力量,共同守護(hù)最
集中整治!2天拆除膠州寺門首路9處臨
為把城市更新作為推動(dòng)城市管理向城市治理轉(zhuǎn)變的有力舉措,進(jìn)一步轉(zhuǎn)變工
代言人阿隆·戈登助掘金摘得NBA總冠
6月13日,丹佛掘金以94:89擊敗邁阿密熱火,大比分4:1拿下2022-2023賽
世界最資訊丨2023年南海“村BA”來了
2023年南海“村BA”來了!從“村BA”看鄉(xiāng)村文化振興的底層邏輯兩部門印
燃亮微“星”愿 星孩集體過生日
“星孩”們度過了一個(gè)歡樂的集體生日昨日,“我為群眾辦實(shí)事”暨“我為
為什么律師都怕虛假訴訟?律師為虛假
為什么律師都怕虛假訴訟?因?yàn)樘摷僭V訟是違法行為。律師有的時(shí)候自己出庭,委托人將相關(guān)證據(jù)交給律師。律師并不知道此證據(jù)是虛假證據(jù)。如果
生物無機(jī)化學(xué)原理_關(guān)于生物無機(jī)化學(xué)
生物無機(jī)化學(xué)原理,關(guān)于生物無機(jī)化學(xué)原理介紹這個(gè)很多人還不知道,我們
泉州“傀儡調(diào)”參加全國民族器樂展演
日前,全國民族器樂展演首場民間樂種組合展演在河北省廊坊市舉行,泉州
今日熱議:美媒:醫(yī)生罷工致醫(yī)院將面
據(jù)美國彭博新聞社網(wǎng)站6月13日?qǐng)?bào)道,在最近一場圍繞薪酬和工作條件的爭
虛假訴訟的六種表現(xiàn)有哪些?為什么法
虛假訴訟的六種表現(xiàn)有哪些?1 故意利用打官司來敲詐勒索金錢或者其他利益。2 編造或夸大事實(shí)、證據(jù)和捏造偽造證據(jù),以達(dá)到欺騙法院和故意誤
民事訴訟提供虛假的證據(jù)怎么處罰?法
民事訴訟提供虛假的證據(jù)怎么處罰?《中華人民共和國民事訴訟法》偽造證據(jù)的法律后果:(1)作偽證情節(jié)較輕的不追究刑事責(zé)任,但會(huì)受到罰款或者
證據(jù)必須在開庭前全部提交嗎?法院為
證據(jù)必須在開庭前全部提交嗎?如果法院指定了舉證期限,即向你送達(dá)了《舉證通知書》,舉證通知書載明了舉證期限,那么你應(yīng)在舉證期限屆滿之
民事案件開庭時(shí)間一般幾個(gè)小時(shí)?庭審
民事案件開庭時(shí)間一般幾個(gè)小時(shí)?法院審理案件的開庭時(shí)間是沒有具體規(guī)定的,根據(jù)案件的復(fù)雜程度來確定,一般情況兩個(gè)小時(shí)左右的時(shí)間可以審理
硬屏與軟屏的優(yōu)劣(硬屏和軟屏的區(qū)別
來為大家解答以上問題,硬屏與軟屏的優(yōu)劣,硬屏和軟屏的區(qū)別很多人還不
環(huán)球通訊!2023年6月北京經(jīng)開區(qū)公租
1 分組規(guī)則本次配租登記家庭分為兩組,分別為第一組、第二組。具體為:
央行:5月份人民幣存款增加1.46萬億
央行數(shù)據(jù)顯示,5月份人民幣存款增加1 46萬億元,同比少增1 58萬億元。
方方土是什么梗 方方土
1、堃,讀作kūn,是坤的異形字,意義同“坤”(多用于人名)。2、拼音
黃曉明之歌好想你是什么梗|熱聞
作為大家熟知的藝人明星,黃曉明也為大家?guī)砹瞬簧倜#诰W(wǎng)絡(luò)隨便搜
全球觀天下!如何去除地板磚上的污漬
相信大家對(duì)如何去除地板磚上的污漬,怎樣去除地板磚上的污漬的問題都很
泰國小香豬到底會(huì)不會(huì)長很大?泰國小
泰國小香豬到底會(huì)不會(huì)長很大?泰國小香豬也是會(huì)長大的,只不過比普通的豬體型要小很多,生長速度也很慢。它出生時(shí)只有400多克,因?yàn)椴捎昧嘶?/p>
碰了含羞草沒洗手會(huì)中毒嗎?含羞草為
碰了含羞草沒洗手會(huì)中毒嗎?如果摸了含羞草之后及時(shí)清洗是不會(huì)中毒的,偶爾一兩次也沒有什么影響,只要沒有弄斷它并摸到汁液。含羞草的整個(gè)植
含羞草的神奇之處及原因是什么?含羞
含羞草的神奇之處及原因是什么?含羞草的神奇之處及原因:能夠預(yù)測天氣,觸碰葉子會(huì)很快閉合,閉合緩慢說明天氣轉(zhuǎn)晴,閉合較慢說明天氣轉(zhuǎn)陰
小手拉大手?百年樹木 成都市古樹名
2023年6月13日,距離第31屆世界大學(xué)生夏季運(yùn)動(dòng)會(huì)還有45天,為助推“愛
粉蒸肉要蒸多久才能蒸熟?粉蒸肉是冷
粉蒸肉要蒸多久才能蒸熟?粉蒸肉蒸熟的話大概需要一個(gè)小時(shí)左右,但是要想要將粉蒸肉做得好吃,就要多蒸一段時(shí)間,時(shí)間越久越好。所謂是一熟生百
當(dāng)前時(shí)訊:廈門公共場所AED超千臺(tái)
廈門市紅十字會(huì)培訓(xùn)師現(xiàn)場進(jìn)行急救培訓(xùn)。記者陳理杰攝昨日上午,在中國
生物數(shù)學(xué)趨化現(xiàn)象及相關(guān)偏微分方程的
生物數(shù)學(xué)趨化現(xiàn)象及相關(guān)偏微分方程的若干問題,關(guān)于生物數(shù)學(xué)趨化現(xiàn)象及
荷蘭豬怎么區(qū)分公母?荷蘭豬一窩能產(chǎn)
荷蘭豬怎么區(qū)分公母?生殖器不同:公的荷蘭豬下面會(huì)有突出在外的生殖器,而母的荷蘭豬沒有。大小不同:在年齡相同的情況下,公的荷蘭豬會(huì)比