JS函数|封装、作用域与高阶函数权威指南
一、函数核心原理概述函数就是封装一段可重复执行的代码块可以传入参数执行完成后返回结果实现逻辑复用避免大量重复代码。JavaScript中函数属于引用类型既可以调用执行也可以当作普通数据进行赋值、传递、返回。函数的核心组成函数名函数标识用于调用匿名函数除外形参接收外部传入的数据位于小括号内函数体大括号内部需要封装执行的业务代码return返回值函数向外输出执行结果无return默认返回undefined函数生效条件定义函数只是声明逻辑必须调用才会执行内部代码。二、函数的三种定义方式方式一函数声明function声明使用function关键字直接声明具备函数提升代码执行前就已经注册可以在定义之前调用。// 函数声明 function calcSum(a, b) { return a b; } // 函数调用 let res calcSum(10, 20); console.log(res);工程用途通用工具函数全局业务方法优先使用函数声明。方式二函数表达式匿名函数赋值给变量把匿名函数赋值给变量不存在函数提升必须先定义后调用。事件回调大量使用该形式。const calcSum function (a, b) { return a b; }; let res calcSum(10, 20); console.log(res);方式三箭头函数 ES6箭头函数是函数的简写语法不绑定this、没有arguments不能作为构造函数常用于回调简写。const calcSum (a, b) { return a b; }; // 单行简写省略return与大括号 const calcSum2 (a, b) a b;三、参数与返回值机制形参函数定义时书写的占位变量实参调用函数时真正传入的数据。// a,b 形参 function sayHi(name) { return 你好${name}; } // 张三 实参 let str sayHi(张三); console.log(str);实参多于形参多余实参默认被忽略可通过剩余参数...rest接收全部剩余参数实参少于形参未接收到数据的形参值为undefined可以设置默认参数// 默认参数 function logInfo(name 匿名用户) { console.log(name); } // 剩余参数收集多个实参为数组 function total(...nums) { return nums.reduce((sum, item) sum item, 0); }return作用终止函数执行向外返回结果函数执行遇到return后面代码不再运行没有写return函数默认返回undefined。四、作用域与作用域链作用域规定变量的可访问范围JS分为全局作用域、函数作用域、块级作用域。全局作用域脚本顶层任意位置都可以访问window下的变量谨慎使用容易污染命名空间函数作用域函数内部函数外部无法直接访问函数内部变量块级作用域let/const产生if、for大括号形成独立作用域var不受块级约束作用域链访问一个变量时优先在当前作用域查找找不到向外层一层层查找直到全局作用域找不到直接抛出引用错误。let outer 外层变量; function fn() { let inner 内部变量; console.log(outer); // 向外查找访问外层变量 } fn(); // console.log(inner); // 函数外部无法访问内部变量报错五、闭包函数保留外层作用域闭包产生条件内部函数访问外层函数的变量并且内部函数被外部环境引用。外层函数执行完毕它的变量不会被销毁依旧可以被内部函数使用。function outer() { let count 0; return function inner() { count; return count; }; } const counter outer(); console.log(counter()); console.log(counter());闭包的价值与风险用途保存私有数据、数据缓存、防抖节流、封装工具逻辑风险变量常驻内存不当使用会造成内存泄漏不用时解除引用释放内存六、高阶函数高阶函数定义接收函数作为参数或者返回一个函数是函数作为一等公民的重要体现。数组遍历方法、回调、防抖节流全部基于高阶函数。// 接收函数作为参数 function handleArr(arr, cb) { for(let i 0; i arr.length; i){ cb(arr[i]); } } handleArr([10,20,30], function(item){ console.log(item); });常见高阶函数场景定时器、事件addEventListener、数组map/filter/forEach、防抖节流封装。七、this指向规则函数上下文this是函数运行时的上下文对象它的值不看定义位置看函数的调用方式。普通函数直接调用this指向全局window严格模式undefined对象方法调用this指向调用该方法的对象事件处理函数this指向触发事件的DOM元素箭头函数不绑定this继承外层作用域thiscall / apply / bind手动强制修改this指向const obj { name:测试对象, say:function(){ console.log(this.name); } }; obj.say();八、函数工程选型标准企业规范通用工具函数优先使用function函数声明可读性好回调、数组遍历简短逻辑优先箭头函数简化代码需要保存私有状态合理使用闭包用完及时释放引用尽量少全局函数避免全局命名冲突使用模块或者对象包裹函数参数较多场景使用对象传参避免参数顺序记忆成本九、开发高频避坑总结函数声明存在提升函数表达式没有提升不要在定义前调用表达式函数箭头函数没有arguments需要接收可变参数使用...剩余参数闭包不要滥用避免大量常驻内存造成内存泄漏this指向极易混淆牢记this由调用方式决定不是定义位置函数内部执行到return立刻终止return之后代码永远不会执行尽量不要写过长的大函数遵循单一职责一个函数只做一件事十、写在最后变量存储数据函数封装行为。函数、作用域、闭包、高阶函数、this上下文共同构成JavaScript核心能力。掌握函数整套体系才能看懂回调、异步、数组高级方法、封装工具方法真正从写零散代码走向工程化JS开发。

相关新闻

B200单卡跑Qwen3-8B:大模型推理带宽瓶颈与加速实战

B200单卡跑Qwen3-8B:大模型推理带宽瓶颈与加速实战

1. 为什么我盯上了 B200 单卡跑 Qwen3-8B 这件事 大模型推理这个圈子,最近一年有个很明显的变化:大家不再只盯着“能不能跑起来”,而是开始死磕“每 token 到底花了多少时间、多少显存、多少电”。我手头这块 B200 单卡,显存 192G…

2026/9/30 13:16:38 阅读更多 →
BackTrack3与spoonwep2实战:优盘制作、WEP抓包与密码恢复指南

BackTrack3与spoonwep2实战:优盘制作、WEP抓包与密码恢复指南

简介:这份PDF资料面向无线网络安全初学者与网络技术爱好者,围绕BackTrack3系统与spoonwep2图形化工具,讲解WEP无线密码的破解原理与操作流程,适合作为了解无线加密薄弱环节、提升安全意识的入门参考。资源包内仅含1个PDF文件&…

2026/9/30 13:16:38 阅读更多 →
Termux+filebrowser:把安卓手机变成局域网网页文件管理器

Termux+filebrowser:把安卓手机变成局域网网页文件管理器

手机里躺着一块 128GB 甚至 512GB 的存储空间,想把电脑下载的电影拖进去、把相册里的原图倒出来、把一个配置文件塞进某个 App 的目录,最顺手的路子还是插数据线加 MTP,或者先传云盘再下载一遍。前者要线、要驱动、要选对 USB 模式&#xff0…

2026/9/30 13:16:38 阅读更多 →

最新新闻

Python报错No module named collections:拼写、路径与同名文件全排查

Python报错No module named collections:拼写、路径与同名文件全排查

看到这个报错,第一反应如果你是想 pip install collections ,先把手从键盘上挪开。这个报错文案在网上被反复搜,但大多数情况下,真正要修的跟「安装」没什么关系,跟一个字母有关系——Python 标准库里只存在 collec…

2026/9/30 15:31:11 阅读更多 →
Spring Boot校园兼职创业平台:从零到答辩的核心方案

Spring Boot校园兼职创业平台:从零到答辩的核心方案

每年到这个时间点,总有学弟学妹来问同一个问题:毕设选题到底选什么。说实话,如果让我给一个“难度适中、技术含量足够、答辩有话说、还能兼顾实用性”的推荐,Spring Boot校园兼职创业平台绝对是排在前三的选择。为什么&#xff1f…

2026/9/30 15:31:10 阅读更多 →
Unity停止协程的五种姿势:原理、对比与实战避坑

Unity停止协程的五种姿势:原理、对比与实战避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 15:31:10 阅读更多 →
Unity粒子系统深度实践:Sub Emitters与Stretched Billboard应用

Unity粒子系统深度实践:Sub Emitters与Stretched Billboard应用

1. 项目概述:为什么粒子效果是Unity 3D视觉表现的“呼吸感”核心在Unity 3D项目里,你有没有遇到过这样的场景:角色释放技能时只有一道光效闪过,缺乏层次;爆炸只有静态贴图一闪而过,观众完全感受不到冲击力&…

2026/9/30 15:31:10 阅读更多 →
医学审稿防数据注水:从p值、标准差到快速复核方法

医学审稿防数据注水:从p值、标准差到快速复核方法

医学审稿这些年,我见过最让我后背发凉的稿件,不是结论互相矛盾的那种,而是数据“漂亮”到不像真的那种。前阵子审到一篇随机对照试验,两组基线表堪称完美:年龄均值几乎一样,标准差精确到小数点后两位都相同…

2026/9/30 15:31:10 阅读更多 →
OpenStack源码解读:从Nova入手掌握核心架构与调试技巧

OpenStack源码解读:从Nova入手掌握核心架构与调试技巧

简介:这份《OpenStack技术源码模块解读》面向云计算开发与运维人员、源码阅读爱好者,以及希望从IaaS层理解OpenStack架构的中高级学习者,帮助解决组件繁杂、源码入门无从下手的问题。资源以Nova项目为主线,系统梳理OpenStack从最初…

2026/9/30 15:30:09 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/30 13:14:22 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/30 15:27:04 阅读更多 →