JavaScript代码还能这么玩?这些骚操作简直绝了!

50 阅读2分钟

JavaScript代码

代码还能这样写

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/」