为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript中的高阶函数:让我们深入了解一下!

JavaScript 充满了各种巧妙的特性,而高阶函数(HOFs)是非常酷的特性之一。无论你是处理数据、构建UI,还是设计算法,高阶函数(HOFs)会是你最好的帮手。那,HOFs是什么呢?🤔

一个高阶函数是指这样的函数:它要么接受一个或多个函数作为参数,要么返回一个函数。

  1. 接受另一个函数作为参数。
  2. 并且返回一个函数。

简单吧!好了,不讲那些理论了,咱们来看看一些有趣的例子 🔥

原文中带有星号(*),此处保留原文形式:此处省略

1️⃣ 把函数当参数传递

假设你想对数组中的每个元素执行一个函数操作,这时,.map() 这个方法就派上用场了,它是 JavaScript 中高阶函数中的明星。

比如:

    const numbers = [1, 2, 3, 4, 5];

    // 使用 `map` 方法将每个数字乘以 2
    const doubled = numbers.map(num => num * 2);

    // 将每个数字乘以2
    console.log(doubled); // [2, 4, 6, 8, 10]

全屏模式 退出全屏

💡 它是怎么工作的

  • .map() 接收一个函数(如 num => num * 2)作为参数。
  • 它会把该函数应用到数组中的每个元素上。

    • *
2️⃣ 返回函数的功能

有时候,一个函数需要动态生成另一个函数。🤯

柯里化(Currying) 就是一个经典例子!

柯里化(Currying)就是一个经典例子!

例如:比如这种情况

    const multiplyBy = multiplier => number => number * multiplier;

    // 创建特定的倍数函数
    const double = multiplyBy(2);
    const triple = multiplyBy(3);

    // 这里的函数使用了函数式编程的概念,通过一个乘数生成特定的倍数函数
    console.log(double(5)); // 10
    console.log(triple(5)); // 15

全屏显示 退出全屏

💡 为什么?

这让你能创建灵活且可重复使用的逻辑。你只需编写一次逻辑,就能生成酷炫的自定义函数。🚀


3️⃣ 玩转过滤

另一个HOF英雄是 .filter()。它让你根据条件从数组中筛选出想要的项

例子:

    const words = ["apple", "banana", "kiwi", "apricot"];

    // 筛选出以 'a' 开头的单词
    const startsWithA = words.filter(word => word.startsWith("a"));

    console.log(startsWithA); // 控制台输出(startsWithA);

全屏,退出全屏

💡 小贴士:结合使用 .map().filter() 来像高手一样进行链式操作。


四、减少你的烦恼

可以说,.reduce() 是一个万能助手。它能将数组中的所有元素处理成一个单一的值。

例子:

    const prices = [10, 20, 30];

    // 注释:计算价格总和
    const total = prices.reduce((sum, price) => sum + price, 0);

    console.log(total); // 输出总和:60

切换到全屏模式 退出全屏

💡 用例:无论是求和还是将数组扁平化,.reduce() 都是你的得力助手。


  1. 回调函数与事件监听器

addEventListener 这样的函数也是高阶函数,因为它们接受回调函数作为参数。

例子:

    document.querySelector("button").addEventListener("click", () => {
      console.log("按钮被点击了🚀");
    });

全屏 退出全屏

💡 这是怎么做到的? 你传递给 addEventListener 的函数会在事件(例如点击)发生时被执行。


🤔 难题:你能猜出结果吗?
    const createCounter = () => {
      let count = 0;
      return () => ++count;
    };

    const counter1 = createCounter();
    const counter2 = createCounter();

    console.log(counter1()); // 输出 1
    console.log(counter1()); // 输出 2
    console.log(counter2()); // 输出 1
    console.log(counter2()); // 输出 2

切换到全屏 退出全屏

来猜猜吧!在评论区留言哦!🔥


高阶函数可以让代码更清晰、强大且易于维护。掌握它们,你很快就能够像大师一样使用JavaScript 🧙‍♂️!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消