8 个实用 JavaScript 技巧,让你的代码更简洁高效
在日常开发中,我们经常会接触到各种重复、冗余甚至难以维护的代码逻辑。作为一名程序员,写出优雅、可读、性能良好的代码是我们持续追求的目标。本文整理了 8 个高频但容易被忽视的 JavaScript 技巧,帮你从“能用”迈向“优雅”。
1. 可选链(Optional Chaining):优雅处理 null 和 undefined
传统写法总是充满冗余的 null 判断:
if (user && user.profile && user.profile.image) {
console.log(user.profile.image);
}
使用可选链,代码瞬间清爽:
console.log(user?.profile?.image);
这样即使某一层为 undefined
,也不会抛出异常,而是返回 undefined
,非常适合处理深层嵌套的对象。
2. 解构赋值:快速提取对象和数组属性
不再需要一行行提取属性:
const name = user.name;
const age = user.age;
使用解构:
const { name, age } = user;
还能进行嵌套解构:
const { profile: { image, bio } } = user;
高效又简洁,是操作对象和数组的利器。
3. 短路赋值:更简洁的默认值设置
传统方式:
if (!name) {
name = 'Anonymous';
}
现代写法:
name ||= 'Anonymous';
也可以:
const username = name || 'Anonymous';
这种方式不仅简洁,还让逻辑更清晰。
4. 展开运算符(Spread):复制与合并新选择
复制对象或数组:
const newObj = { ...oldObj };
合并多个对象:
const config = { ...defaults, ...userSettings };
不仅语法简洁,而且避免了 Object.assign
的繁琐写法。
5. 数组函数化操作:优雅替代 for 循环
不要再用传统的 for
循环处理数组:
for (let i = 0; i < arr.length; i++) {
total += arr[i];
}
用 reduce
替代:
const total = arr.reduce((sum, num) => sum + num, 0);
其他方法如 map
、filter
、some
、every
也是处理数据的绝佳选择。
6. 记忆化(Memoization):缓存结果提升性能
适用于高成本计算函数:
const memo = {};
function expensive(n) {
if (memo[n]) return memo[n];
console.log('Calculating...');
const result = n * 1000;
memo[n] = result;
return result;
}
记忆化让你避免重复计算,相同输入只执行一次。
7. IIFE(立即执行函数表达式):模块化利器
封装代码并立即执行:
(function () {
// 一次性的初始化操作
})();
适用于创建私有作用域、防止变量污染全局空间。
8. 永别了 var:拥抱 let 和 const
var
是 ES5 的遗物,已不再适合现代开发:
var
没有块级作用域,容易引发变量提升问题。let
支持块级作用域。const
提供不可变变量声明,适用于常量。
请尽量使用 let
和 const
,不仅更安全,也更易维护。
总结
这些技巧不仅是语法糖,更是写出高质量 JavaScript 的利器。你可以从中选择一两个技巧开始优化自己的代码,逐步养成良好的编码习惯,最终让自己和团队受益。
未来的你,一定会感谢现在开始重构代码的你。