讲师中心 微信公众号
AI工具推荐 视频效率加速

函数式编程:JS中的高阶函数应用

风晨酱_8623

风晨酱_8623

发布时间:2025-11-18 17:50:03

|

1016人浏览过

|

来源于php中文网

原创

<p>高阶函数是接收函数作为参数或返回函数的函数,具有提升代码抽象与复用能力。其典型特征包括接受函数参数和返回函数,常见内置方法有map、filter、reduce等。通过map可转换数组元素,如numbers.map(x => x * 2)生成新数组;filter用于筛选符合条件的元素,如ages.filter(age => age >= 18)保留成人年龄;reduce实现累积计算,如values.reduce((acc, cur) => acc + cur, 0)求和。自定义高阶函数增强复用性,例如delay(fn, wait)封装延迟执行逻辑,形成可复用装饰器;unless(condition, fn)封装条件执行,使控制流更语义化。闭包常与高阶函数结合,如createCounter(initial)通过内部函数引用外部变量count,形成闭包并维护私有状态,实现计数器功能。这些模式让JavaScript代码更简洁、清晰且具表达力,是日常开发中提升质量的实用工具。</p>

函数式编程:js中的高阶函数应用

在JavaScript中,函数是一等公民,这意味着函数可以像普通变量一样被传递、赋值和返回。正是这个特性,让高阶函数成为函数式编程的核心工具之一。高阶函数是指接受函数作为参数,或者返回一个函数的函数。它们不仅提升了代码的抽象能力,也让逻辑复用更加自然。

什么是高阶函数?

高阶函数有两个典型特征:

  • 接收一个或多个函数作为参数
  • 返回一个函数

常见的内置高阶函数包括 mapfilterreducesetTimeout 等。通过使用这些函数,我们可以避免显式的循环和状态管理,写出更清晰、可读性更强的代码。

常见高阶函数的实际应用

以下是一些典型的高阶函数使用场景:

1. map:转换数组元素

将数组中的每个元素通过函数处理,生成新数组。

const numbers = [1, 2, 3];
const doubled = numbers.map(x => x * 2); // [2, 4, 6]

2. filter:筛选符合条件的元素

根据条件函数保留部分元素。

const ages = [16, 20, 25, 14];
const adults = ages.filter(age => age >= 18); // [20, 25]

3. reduce:累积计算结果

将数组“归约”为一个值,常用于求和、拼接等操作。

Java Development Manual
Java Development Manual

Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...

下载
const values = [1, 2, 3, 4];
const sum = values.reduce((acc, cur) => acc + cur, 0); // 10

自定义高阶函数提升复用性

除了使用内置方法,我们也可以创建自己的高阶函数来封装通用逻辑。

例如,实现一个函数,用于延迟执行某个操作(节流思想简化版):

function delay(fn, wait) {
  return function(...args) {
    setTimeout(() => fn.apply(this, args), wait);
  }
}

const sayHello = () => console.log("Hello!");
const delayedHello = delay(sayHello, 1000);
delayedHello(); // 1秒后输出 "Hello!"

这样,delay 成为了一个可复用的函数装饰器,适用于任何需要延迟执行的场景。

另一个例子是创建条件判断包装函数:

function unless(condition, fn) {
  if (!condition) fn();
}

users.forEach(user => {
  unless(user.isAdmin, () => sendNotification(user));
});

这种写法让控制流更语义化,接近自然语言表达。

闭包与高阶函数的结合

高阶函数常与闭包配合使用,以保存上下文数据。

比如,创建一个计数器工厂:

function createCounter(initial = 0) {
  let count = initial;
  return function() {
    count++;
    return count;
  }
}

const counter = createCounter(5);
console.log(counter()); // 6
console.log(counter()); // 7

内部函数引用了外部的 count 变量,形成了闭包,实现了私有状态的维护。

基本上就这些。高阶函数不是花哨的概念,而是日常开发中提升代码质量的实用工具。理解它们的原理和模式,能让JS代码更简洁、更具表达力。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

相关专题

更多
counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2248

2023.11.20

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

678

2025.12.04

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

1878

2023.09.20

go语言闭包相关教程大全
go语言闭包相关教程大全

本专题整合了go语言闭包相关数据,阅读专题下面的文章了解更多相关内容。

3373

2025.07.29

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

390

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

323

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

473

2025.11.17

java判断map相关教程
java判断map相关教程

本专题整合了java判断map相关教程,阅读专题下面的文章了解更多详细内容。

243

2025.11.27

AI视频生成软件推荐
AI视频生成软件推荐

本专题汇总了当前主流的AI视频生成软件推荐与排行榜单,涵盖seko、AniShort、剧云、Lovart、LiblibAI及立刻mv等热门工具。同时整理了各软件在文生视频、图生视频、时长限制、画质表现及免费额度等方面的差异对比,助您快速选对适合创作需求的AI视频生成工具。

160

2026.09.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python进阶视频教程
Python进阶视频教程

共30课时 | 8.9万人学习

Scala教程
Scala教程

共24课时 | 19.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn