20 个 JavaScript 简化技巧,让你的代码更上一层楼!JavaScript 既灵活又强大,但要精通它也需要下一
JavaScript 既灵活又强大,但要精通它也需要下一番功夫。以下 20 个 JavaScript 技巧和窍门,每个开发者都应该知道,它们可以帮你写出更简洁、更高效的代码,并改进你的开发流程。🌟
1. 用 let
和 const
代替 var
🚫
不要再用 var
声明变量了! 使用 let
和 const
可以确保块级作用域,并避免变量提升带来的问题。
示例:
let name = 'John';
const age = 30;
2. 解构赋值 🌟
解构赋值可以让你从数组或对象中提取值,并赋值给独立的变量。
示例:
const person = { name: 'Jane', age: 25 };
const { name, age } = person;
const numbers = [1, 2, 3];
const [first, second] = numbers;
3. 模板字面量 📜
模板字面量提供了一种简单的方法,可以将变量和表达式插入到字符串中。
示例:
const name = 'John';
const greeting = `Hello, ${name}!`;
4. 默认参数 🛠️
为函数参数设置默认值,可以避免 undefined
错误。
示例:
function greet(name = 'Guest') {
return `Hello, ${name}!`;
}
5. 箭头函数 🎯
箭头函数语法简洁,并且词法绑定 this
值。
示例:
const add = (a, b) => a + b;
6. 扩展运算符 ...
🌐
扩展运算符可以展开可迭代对象(如数组)的元素或对象的属性。
示例:
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5];
const obj1 = { name: 'John' };
const obj2 = { ...obj1, age: 30 };
7. 剩余参数 ...
🌟
剩余参数允许你将不确定数量的参数表示为一个数组。
示例:
function sum(...numbers) {
return numbers.reduce((total, num) => total + num, 0);
}
8. 短路求值 && 和 || 🛠️
使用短路求值来简化条件表达式和默认值的处理。
示例:
const user = { name: 'John' };
const name = user.name || 'Guest';
const isAdmin = user.isAdmin && 'Admin';
9. 对象属性简写 🚀
当属性名和变量名相同时,使用简写语法创建对象。
示例:
const name = 'John';
const age = 30;
const person = { name, age };
10. 可选链 ?.
🌐
可选链允许你安全地访问深层嵌套的属性,而无需检查每个引用是否有效。
示例:
const user = { name: 'John', address: { city: 'New York' } };
const city = user.address?.city;
11. 空值合并运算符 ??
🌟
空值合并运算符 (??
) 可以在左侧操作数为 null
或 undefined
时返回右侧操作数。
示例:
const user = { name: 'John' };
const name = user.name ?? 'Guest';
12. 数组方法:map()、filter()、reduce() 🛠️
使用 map()
、filter()
和 reduce()
等数组方法,以函数式的方式对数组执行常见操作。
示例:
const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map(num => num * 2);
const evens = numbers.filter(num => num % 2 === 0);
const sum = numbers.reduce((total, num) => total + num, 0);
13. Promise 链和 Async/Await 🎯
使用 Promise 和 async/await 语法处理异步操作,使代码更清晰、更易读。
Promise 示例:
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
Async/Await 示例:
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Error:', error);
}
}
14. 防抖和节流 🌟
通过防抖和节流优化频繁调用的函数的性能,例如滚动或调整大小事件期间的函数。
防抖示例:
function debounce(func, delay) {
let timeoutId;
return function(...args) {
clearTimeout(timeoutId);
timeoutId = setTimeout(() => func.apply(this, args), delay);
};
}
window.addEventListener('resize', debounce(() => {
console.log('Resized');
}, 300));
节流示例:
function throttle(func, limit) {
let inThrottle;
return function(...args) {
if (!inThrottle) {
func.apply(this, args);
inThrottle = true;
setTimeout(() => inThrottle = false, limit);
}
};
}
window.addEventListener('scroll', throttle(() => {
console.log('Scrolled');
}, 300));
15. 使用 for...of
循环进行迭代 🚀
使用 for...of
循环对数组、字符串和其他可迭代对象进行更易读的迭代。
示例:
const numbers = [1, 2, 3, 4, 5];
for (const number of numbers) {
console.log(number);
}
16. 克隆对象和数组 🛠️
使用扩展运算符或 Object.assign()
来克隆对象和数组。
示例:
const original = { name: 'John', age: 30 };
const clone = { ...original };
const arr = [1, 2, 3];
const arrClone = [...arr];
17. 动态属性名 🌟
使用计算属性名来动态设置对象属性。
示例:
const propName = 'age';
const person = {
name: 'John',
[propName]: 30
};
18. 使用 setTimeout
和 setInterval
🎯
使用 setTimeout
和 setInterval
安排代码执行时间。
示例:
setTimeout(() => {
console.log('2 秒后执行');
}, 2000);
const intervalId = setInterval(() => {
console.log('每 3 秒执行一次');
}, 3000);
// 清除定时器
clearInterval(intervalId);
19. 字符串方法:includes()、startsWith()、endsWith() 📜
使用现代字符串方法执行常见的字符串操作。
示例:
const str = 'Hello, World!';
console.log(str.includes('World')); // true
console.log(str.startsWith('Hello')); // true
console.log(str.endsWith('!')); // true
20. 高效使用 console
进行调试 🛠️
利用各种 console
方法进行更有效的调试。
示例:
console.log('普通日志');
console.warn('这是一个警告');
console.error('这是一个错误');
console.table([{ name: 'John', age: 30 }, { name: 'Jane', age: 25 }]);
console.group('分组');
console.log('消息 1');
console.log('消息 2');
console.groupEnd();
掌握这些 JavaScript 技巧,可以帮你写出更简洁、更高效的代码,让你的编程之路更加顺畅! ✨
转载自:https://juejin.cn/post/7410420138308583439