JavaScript 是前端開發中的必備語言。但是我發現很多同學對于 JavaScript 的技巧使用卻并不熟悉。所以,今天咱們就來分享一下 JavaScript 的10個好用的技巧,幫你更好地使用 JavaScript,提升開發效率!
有些 JavaScript 方法盡管鮮為人知,但它們解決獨特挑戰的潛力能夠增強編碼效率, 比如 flatMap()
數組方法 flatMap() 本質上是 map()和 flat() 的組合,區別在于 flatMap 只能扁平1級,flat 可以指定需要扁平的級數,flatmap 比分別調用這兩個方法稍微高效一些。
const arr = [1, 2, [4, 5], 6, 7, [8]];// 使用 map 對每個元素進行操作并用 flat 展平結果const result = arr.map(element => Array.isArray(element) ? element : [element]).flat();console.log(result); // output: [1, 2, 4, 5, 6, 7, 8]
const arr = [1, 2, [4, 5], 6, 7, [8]] ;console.log(arr.flatMap((element) => element)); // output :[1, 2, 4, 5, 6, 7, 8]
flatmap 盡管是一個方法,但也會有 中間數組 /(指中間創建了必須進行垃圾收集的臨時數組/)[1]的產生,flatMap 非常適合在需要靈活性和可讀性的情況下使用。
console 并不只有 console.log(), 實際生產中都會使用已經封裝好的log庫,而 控制臺對象 console 實際上內置了許多非常有用的方法,幫助您提高調試輸出的質量和可讀性,掌握它們能使您更輕松地 debug 和修復代碼中的問題。
// 1. console.time 和 console.timeEnd// 測量執行一段代碼所需的時間。識別代碼中的性能瓶頸并對其進行優化console.time('開始獲取數據');fetch('https://reqres.in/api/users') .then(response => response.json()) .then(data => { console.timeEnd('獲取數據花費時間:'); // ...code }); // 2. console.dir// console.dir 方法以分層格式輸出對象的屬性。方便查看對象的結構以及其所有屬性和方法const promise = new Promise((resolve, reject) => resolve('foo'));console.dir(promise);// 3. console.count// console.count 方法來計算特定日志消息的輸出次數。這對于跟蹤特定代碼路徑的執行次數以及識別代碼中的熱點非常有用const fun = (x) => console.count(x);fun('刻晴'); // 1fun('甘雨'); // 1fun('刻晴'); // 2// 4. console.trace// trace 可以輸出堆棧跟蹤。對于理解代碼中的執行流程以及識別特定日志消息的來源非常有用const foo = () => console.trace();const bar = () => foo();bar();// 5. console.profile profileEnd// 測量代碼塊的性能。這對于識別性能瓶頸以及優化代碼以提高速度和效率非常有用。console.profile('MyProfile');// 想要測量性能的代碼for (let i = 0; i < 100000; i++) { // ...code}console.profileEnd('MyProfile');
此前,如果開發人員想要深拷貝對象,經常需要依賴第三方庫來實現或者手動實現一個神拷貝,或者采取 const cloneObj = JSON.parse(JSON.stringify(obj)); 的 hack, 但其在處理包含循環引用或不符合 JSON 的數據類型(如 Map 和 Set,Blob 等 ) 的更復雜對象時,是有很多不足之處的
而現在,JavaScript 內置了一個 structuredClone() 的方法, 此方法提供了一種簡單有效的方法來深度克隆對象, 且適用于大多數現代瀏覽器和 Node.js v17 以上
// 將原始對象傳遞給該函數, 它將返回一個具有不同引用和對象屬性引用的深層副本const obj = { name: 'Mike', friends: [{ name: 'Sam' }] };const clonedObj = structuredClone(obj);console.log(obj.name === clonedObj); // falseconsole.log(obj.friends === clonedObj.friends); // false
與眾所周知的 JSON.parse(JSON.stringify())” 不同, structuredClone() 允許您克隆循環引用,這是目前在 JavaScript 中使用深拷貝最簡單的方法。
帶標簽的模板(Tagged/_Templates[2]) - 是模板字符串(反引號)的一種更高級的形式,它允許你使用函數解析模板字面量。
這個高級特性我也是在 Next.js 14[3] 發布后人們都在討論的一張圖才去了解的
本文鏈接:http://www.www897cc.com/showinfo-26-77530-0.html大大提高開發效率的十個JavaScript技巧
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com