




JavaScript函数可重用性关键在参数设计、副作用控制和边界处理:优先用箭头函数写工具函数,递归场景用函数声明;长参数改配置对象解构;避免隐式依赖和副作用,输入输出需明确可预测。
JavaScript 函数不是“写一次就完事”的工具,可重用性的关键不在语法形式,而在参数设计、副作用控制和边界处理。
声明式函数(function foo() {})会被提升,能被调用在定义之前;箭头函数(const foo = () => {})不会提升,且没有自己的 this 和 arguments。如果你写的是工具函数(比如格式化日期、深克隆),优先用箭头函数 + const 声明,避免意外覆盖;如果函数需要递归调用自身(如树遍历),必须用函数声明——因为箭头函数没有函数名,无法在内部安全引用自己。
arguments 对象?只能用传统函数声明this?传统函数更可控(或显式 .bind())map/filter 等高阶函数?箭头函数更简洁,避免 function 冗余嵌套避免长参数列表(超过 3 个就危险),尤其当其中部分参数常为 undefined 或默认值时。改用单个配置对象:
// ❌ 容易记混顺序,调用时一堆 undefined
formatDate(date, 'YYYY-MM-DD', true, false, 'UTC')
// ✅ 明确意图,新增字段不影响旧调用
formatDate(date, { format: 'YYYY-MM-DD', withTime: true, utc: true })
同时,在函数内部用解构 + 默认值兜底:
function formatDate(date, { format = 'YYYY-MM-DD', withTime = false, utc = false } = {}) {
// 实现逻辑
}
date),增强调用时的错误提示= {},防止传 undefined 导致解构报错new Date()),它会在每次调用时重复执行一个函数若读取或修改外部变量(如全局 localStorage、DOM 节点、模块级计数器),就很难被复用或测试。例如:
// ❌ 隐式依赖 document,无法脱离浏览器环境
function toggleMenu() {
document.getElementById('menu').classList.toggle('open')
}
// ✅ 输入输出明确,行为可预测
function toggleClass(element, className) {
element.classList.toggle(className)
return element
}

sortByInPlace()),优先返回新数据Promise,不要在内部直接 .then() 或操作 UI真正难的不是写出语法正确的函数,而是判断哪些状态该由调用方负责、哪些该封装进函数内部——这个分界线划错了,再“通用”的函数也会在第二个项目里失效。