用這六個 JavaScript 技巧,輕松應對 80% 的開發場景!
作者:JavaScript
本文分享幾個實用的 JavaScript 技巧,這些技巧雖然看似簡單,但卻能夠覆蓋大部分開發場景,大大提升開發效率。
JavaScript 這門語言是非常強大和靈活的,然而,日常開發中,總有一些場景反復出現,一些問題反復困擾。分享幾個實用的 JavaScript 技巧,這些技巧雖然看似簡單,但卻能夠覆蓋大部分開發場景,大大提升開發效率。
1. 對象解構的高級運用
解構賦值真的是一大神器,除了基礎的對象解構外,這個特性遠比想象中強大:
// 基礎解構都會用
const { name, age } = user;
// 但你知道這些技巧嗎?
const {
name: userName = 'FedJavaScript', // 設置默認值并重命名
profile: {
avatar = 'default.png' // 深層解構帶默認值
} = {}, // 設置空對象預防 profile 不存在
...rest // 收集剩余屬性
} = user;
// 函數參數解構,讓代碼更優雅
function processUser({
id,
name = 'FedJavaScript',
isAdmin = false
} = {}) { // 設置空對象作為默認值,防止不傳參數
// ...
}
2. 數組操作的函數式方法
避免使用傳統的 for 循環,轉而使用更優雅的函數式方法:
const users = [
{ id: 1, name: 'Alex', age: 20 },
{ id: 2, name: 'Bob', age: 25 },
{ id: 3, name: 'Charlie', age: 30 }
];
// 鏈式調用處理數據
const processedUsers = users
.filter(user => user.age >= 25) // 過濾
.map(({ id, name }) => ({ id, name })) // 轉換
.reduce((acc, user) => {
acc[user.id] = user; // 轉換成對象
return acc;
}, {});
3. 異步操作的優雅處理
Promise 和 async/await 的組合使用:
4. 可選鏈操作符的妙用
巧妙運用可選鏈和空值合并操作符,讓代碼更健壯:
5. Set 和 Map 的實用場景
這兩個數據結構在特定場景下特別好用:
6. 模板字符串的高級用法
不僅僅是簡單的字符串拼接,還能做更多:
實戰應用示例
讓我們看一個綜合運用這些技巧的實際例子:
async function processUserData(userId) {
// 1. 異步包裝器處理
const [userData, error] = await asyncWrapper(
fetch(`/api/users/${userId}`)
);
if (error) {
return null;
}
// 2. 解構賦值 + 默認值
const {
profile: { name = 'FedJavaScript', avatar = 'default.png' } = {},
settings: { preferences = {} } = {},
posts = []
} = userData;
// 3. 數組處理
const processedPosts = posts
.filter(post => post.status === 'published')
.map(({ id, title, tags = [] }) => ({
id,
title,
// 4. Set處理標簽去重
uniqueTags: [...new Set(tags)]
}));
// 5. Map緩存用戶偏好
const preferencesMap = new Map(
Object.entries(preferences)
);
// 6. 模板字符串生成顯示名稱
const displayName = highlight`${name} (${preferencesMap.get('role') ?? 'User'})`;
return {
displayName,
avatar,
posts: processedPosts
};
}
責任編輯:趙寧寧
來源:
JavaScript