JavaScript 帶給了我們極大的自由,但也帶來了一定的復雜性。為了讓你的代碼更高效、易于維護,下面認真分享 12個 JavaScript 的高級技巧和實用場景。
空值合并(??)
場景:如果變量為 null 或 undefined ,則使用默認值。
const username = user.name ?? 'Guest';
console.log(username); // 如果 user.name 為 null 或 undefined,輸出‘Guest’
使用 Intl 進行格式化
場景:Intl 對象可以用于格式化貨幣、日期以及數字,非常適合需要進行本地化處理的場景。
const formatter = newIntl.NumberFormat('zh-CN', { style: 'currency', currency: 'CNY' });
console.log(formatter.format(1000)); // 輸出:¥1,000.00
緩存函數
場景:緩存函數結果以加快重復調用速度。
const memoize = fn => {
const cache = {};
return(...args) => {
const key = JSON.stringify(args);
if (!cache[key]) cache[key] = fn(...args);
return cache[key];
};
};
可選鏈接
場景:簡化字符串插值和多行字符串。
const address = user?.contact?.address?.city;
console.log(address);
使用 Set 保存唯一值
場景:當需要存儲一組不重復的值時,可以使用 Set。
const unique = newSet([1, 2, 3, 1]);
console.log(unique); // 輸出:Set { 1, 2, 3 }
模板字面量
場景:插入變量,實現多行字符串。
const username = "Saurabh";
const entries = 1567;
const message = `Hello, ${username}!, Welcome to dashboard you have ${entries} left`;
默認參數
場景:為函數參數分配默認值。
function greet(name = 'Guest') {
console.log(`Hello, ${name}!`);
}
數組擴展運算符
場景:克隆或合并數組。
const newArray = [...array1, ...array2];
數組映射
場景:將元素轉換成新數組。
const names = users.map(user => user.name);
防抖
場景:控制函數執行頻率。
const debounce = (func, delay) => {
let timeout;
return (...args) => {
clearTimeout(timeout);
timeout = setTimeout(() => func(...args), delay);
};
};
節流
場景:控制函數隨時間推移的執行頻率。
const throttle = (func, limit) => {
let lastFunc;
let lastRan;
return(...args) => {
if (!lastRan) {
func(...args);
lastRan = Date.now();
} else {
clearTimeout(lastFunc);
lastFunc = setTimeout(() => {
if (Date.now() - lastRan >= limit) {
func(...args);
lastRan = Date.now();
}
}, limit - (Date.now() - lastRan));
}
};
};
Promise.all
場景:并行處理多個 promise。
const results = await Promise.all([fetchData1(), fetchData2()]);
結論
通過掌握這些高級 JavaScript 技巧,你可以在編寫代碼時更加高效、優雅,并能輕松解決復雜問題。無論是通過 Intl 進行數據格式化,還是使用 Set 去重和管理集合,這些實用的方法都能幫助你寫出更簡潔、更專業的代碼。
本文首發于公眾號“web前端開發之旅”,轉載請注明出處!
該文章在 2025/1/3 9:12:58 編輯過