JavaScript 的奇技淫巧

JavaScript 作为一门动态语言,拥有丰富的特性和灵活性。这使得开发者们能够编写出既强大又高效的代码。然而,在某些情况下,为了追求代码的精简或性能优化,开发者可能会采用一些非传统的技巧。接下来,我们一起探索一些这样的"奇技淫巧",一起感受JavaScript的独特魅力。

1. 三元运算符的简洁写法

js 复制代码
const age = 25;
const message = age > 18 ? 'Adult' : 'Minor'; // 更简洁的条件赋值

2. 立即执行函数表达式 (IIFE)

js 复制代码
(function() {
    console.log('Immediately executed!');
})();

3. 函数柯里化 (Currying)

js 复制代码
function add(x) {
    return function(y) {
        return x + y;
    };
}

const addFive = add(5);
console.log(addFive(10)); // 15

4. 闭包 (Closure)

js 复制代码
function counter() {
    let count = 0;
    return function() {
        return ++count;
    };
}

const increment = counter();
console.log(increment()); // 1
console.log(increment()); // 2

5. 位运算

js 复制代码
// 检查一个数是否为2的幂
function isPowerOfTwo(n) {
    return n > 0 && (n & (n - 1)) === 0;
}

console.log(isPowerOfTwo(16)); // true

6. 字符串模板

js 复制代码
const name = 'Alice';
console.log(`Hello, ${name}!`); // Hello, Alice!

7. 箭头函数

js 复制代码
const multiply = (a, b) => a * b;
console.log(multiply(3, 4)); // 12

8. 解构赋值

js 复制代码
const person = { firstName: 'John', lastName: 'Doe' };
const { firstName, lastName } = person;
console.log(firstName, lastName); // John Doe

9. 扩展运算符

js 复制代码
const arr1 = [1, 2];
const arr2 = [3, 4];
const combined = [...arr1, ...arr2];
console.log(combined); // [1, 2, 3, 4]

10. 短路求值

js 复制代码
const a = null;
const b = 42;
console.log(a || b); // 42

11. 空值合并运算符 (??)

js 复制代码
const value = null;
const defaultVal = value ?? 5;
console.log(defaultVal); // 5

12. 可选链操作符 (?.)

js 复制代码
const obj = { nested: { value: 42 } };
console.log(obj.nested?.value); // 42
console.log(obj.missing?.value); // undefined

13. 递归

js 复制代码
function factorial(n) {
    return n <= 1 ? 1 : n * factorial(n - 1);
}
console.log(factorial(5)); // 120

14. 使用 Array.fromArray.of

js 复制代码
const arrayFromSet = Array.from(new Set([1, 2, 2, 3]));
console.log(arrayFromSet); // [1, 2, 3]

const arrayWithOneElement = Array.of(42);
console.log(arrayWithOneElement); // [42]

15. Promise 链式调用

js 复制代码
fetch('/api/data')
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error(error));

总结一下

这些技巧展示了 JavaScript 的灵活性和强大功能。虽然它们可以使代码变得更加紧凑和高效,但在实际开发中应该根据具体情况谨慎使用。始终记得,清晰和可维护的代码通常是首选。当你考虑使用这些技巧时,请确保它们不会影响到代码的整体可读性和可维护性。

相关推荐
知远同学2 小时前
Anaconda的安装使用(为python管理虚拟环境)
开发语言·python
小徐Chao努力2 小时前
【Langchain4j-Java AI开发】09-Agent智能体工作流
java·开发语言·人工智能
CoderCodingNo2 小时前
【GESP】C++五级真题(贪心和剪枝思想) luogu-B3930 [GESP202312 五级] 烹饪问题
开发语言·c++·剪枝
2501_946230982 小时前
Cordova&OpenHarmony通知中心实现
android·javascript
南山安2 小时前
JavaScript 函数柯里化:从入门到实战,一文搞定(面试可用)
javascript·面试·函数式编程
kylezhao20193 小时前
第1章:第一节 开发环境搭建(工控场景最优配置)
开发语言·c#
啃火龙果的兔子3 小时前
JavaScript 中的 Symbol 特性详解
开发语言·javascript·ecmascript
栀秋6663 小时前
你会先找行还是直接拍平?两种二分策略你Pick哪个?
前端·javascript·算法
漂流瓶jz3 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·css
热爱专研AI的学妹3 小时前
数眼搜索API与博查技术特性深度对比:实时性与数据完整性的核心差异
大数据·开发语言·数据库·人工智能·python