JavaScript 如何写匿名函数
你或许在写网页时,见过这样的代码:点击一个按钮后,页面会弹出问候语,而控制这个动作的函数,好像没有名字。这就是JavaScript里的匿名函数——它就像你出门买东西时用的小名,不用登记在户口本上,却能精准完成眼前的任务。
什么是匿名函数?
简单说,匿名函数就是没有函数名的函数。平时我们写一个有名字的函数,会这么写:

`javascript
function sayHello() {
console.log("你好呀!");
}
`
这个sayHello就是函数名,方便之后随时调用。但匿名函数没有这个名字,它更像“临时用一次的工具”,用完就可以暂时“隐身”。
最常见的用法:给事件当“临时指令”
你打开一个购物网页,点击“加入购物车”按钮,按钮需要一个“点击后做什么”的指令,这时候用匿名函数就很合适。比如:
`javascript
// 给按钮加点击事件,点击就弹出提示
document.getElementById("addCart").addEventListener("click", function() {
alert("商品已加入购物车!");
});
`
这里function(){...}就是匿名函数——它不用取名字,专门给addEventListener这个方法当参数,告诉浏览器“点击按钮要执行这段代码”。如果给它起名字反而多余,因为除了这次点击,我们不会再调用这个指令。
另一种常用方式:把函数当“数据”存起来
JavaScript里,函数可以像数字、文字一样,当成“数据”存进变量里,这时候也常常用匿名函数。比如我们想统计一天内用户的点击次数,把计数的逻辑存成变量:
`javascript
// 把匿名函数存进变量countClick,相当于给临时工具贴个标签
const countClick = function() {
let num = 0;
return function() { return num++; };
};
// 每次调用countClick(),就会多1次计数
const todayClick = countClick();
console.log(todayClick()); // 输出0
console.log(todayClick()); // 输出1
`
这里的function(){}()就是匿名函数,它被存进countClick变量,之后再通过这个变量调用——相当于给“临时工具”贴了个标签,下次要用到时,不用重新造一个,直接拿标签用就行。
还有一种“立即执行”的用法:用完就消失
有时候我们需要代码只运行一次,不想让它留着占内存,就用“立即执行函数”——这也是匿名函数的一种特殊用法。比如页面加载时,需要自动执行一段初始化代码,不用再手动调用:
`javascript
// 这个匿名函数写完就立刻执行,之后再也不能调用
(function() {
console.log("页面正在初始化,请稍等...");
// 这里可以写加载页面数据的代码
})();
`
注意别写错格式:要把匿名函数包在()里,再加()执行,不然浏览器会以为是函数定义,不会自动跑。这种用法就像你煮完一碗面,吃完就把碗洗了,不会留着占地方。
为什么要多用匿名函数?
不是匿名函数比有名函数好,而是它更“灵活”——就像你出门带手机,有时候直接用(匿名),有时候把手机放包里(存进变量),没必要每次都给手机起个名字。它适合用在“临时用一次”“当参数/数据”的场景,让代码更简洁,不会有多余的函数名,也能避免命名冲突。
如果要重复用某个逻辑,比如计算商品总价,那还是要写有名函数calcTotalPrice(),这样可以随时调用,不用重复写代码。所以匿名函数是工具,该用的时候用,该取名字的时候别省。