代码还能这样写
JavaScript的世界里总是充满惊喜。你以为自己已经掌握了所有技巧?来看看这些让人拍案叫绝的写法!
把数字转成字符串,大多数人用toString()。但你知道**+""**也能达到同样效果吗?简单粗暴,效果拔群。代码越短,bug越少,这话真不是白说的。
let num = 123;
let str = num + ""; // "123"
那些不为人知的运算符
??= 这个运算符见过吗?它叫逻辑空值赋值运算符。左边变量为null或undefined时,才会把右边的值赋给它。比传统的if判断简洁多了!
let user = null;
user ??= "匿名用户"; // user现在是"匿名用户"
||= 和 &&= 也是类似的妙用。它们让代码变得更优雅,更易读。谁说JavaScript不够高级?这些运算符用起来,代码瞬间高大上!
数组操作的魔法时刻
数组去重?Set对象了解一下。一行代码搞定传统方法需要好几行才能完成的工作:
const uniqueArray = [...new Set([1,2,2,3,3,3])]; // [1,2,3]
更绝的是数组求和。reduce方法用得溜,数学计算不用愁:
[1,2,3,4].reduce((a,b)=>a+b); // 10
对象解构的隐藏技能
对象解构不只是用来提取属性。它能和默认值、重命名玩出各种花样:
const {name:userName = "游客"} = {};
// userName现在是"游客"
更厉害的是深层解构。嵌套再深的对象,也能轻松取出想要的值:
const {a: {b: {c}}} = {a: {b: {c: "找到我了!"}}};
// c现在是"找到我了!"
函数式编程的优雅之道
箭头函数让代码变得如此简洁。特别是配合数组方法使用时,简直美如画:
const double = arr => arr.map(x => x * 2);
高阶函数更是JavaScript的精髓所在。函数作为参数传递,代码复用度直线上升:
const withLogging = fn => (...args) => {
console.log(`调用函数: ${fn.name}`);
return fn(...args);
};
异步处理的现代方式
告别回调地狱!async/await让异步代码看起来像同步代码一样清晰:
async function fetchData() {
try {
const response = await fetch('api/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('出错了:', error);
}
}
Promise.all处理多个并行请求时特别给力。等待所有请求完成,一个都不落下:
const [user, posts] = await Promise.all([
fetchUser(),
fetchPosts()
]);
那些让人惊艳的小技巧
模板字符串不只是用来拼接字符串。它能执行函数,能做表达式计算:
const greet = name => `你好,${name.toUpperCase()}!`;
更神奇的是标签模板。自定义字符串处理方式,打开新世界大门:
function highlight(strings, ...values) {
// 自定义处理逻辑
}
highlight`价格:${price}元`;
性能优化的秘密武器
Memoization技术缓存函数结果,避免重复计算。特别适合计算密集型函数:
const memoize = fn => {
const cache = new Map();
return (...args) => {
const key = JSON.stringify(args);
return cache.has(key) ? cache.get(key) : (cache.set(key, fn(...args)), cache.get(key));
};
};
防抖和节流控制函数执行频率。页面滚动、窗口调整大小等场景必备:
function debounce(fn, delay) {
let timer;
return (...args) => {
clearTimeout(timer);
timer = setTimeout(() => fn(...args), delay);
};
}
JavaScript的世界永远充满惊喜。掌握这些技巧,让你的代码从"能用"变成"优雅"。记住,最好的代码不是写得最复杂的,而是写得最容易被理解的。
好菜开黑站「www.haocaiya.cn/」