什么是匿名函数
JavaScript 中的匿名函数其实就是没有名字的函数,例如一般函数长下面这个样子:
function add(a, b){
return a + b;
}
其中 add
就是函数的函数名,我们在调用函数的时候,会用到这个函数名。
add(10, 16);
而匿名函数呢,就是没有这个函数名,例如下面这个函数:
function (a, b){
return a + b;
}
所以我们就会发现一个问题,调用函数时需要用到函数名,但是匿名函数没有函数名,那么匿名函数要怎么调用呢?
匿名函数的使用
下面我们来讲一下匿名函数的使用:
- 第一种方法,我们可以把这个匿名函数放进一个变量里,这个变量就相当于一个函数名了,在调用的时候就用变量名加小括号调用即可。
示例:
将匿名函数赋给变量 add,在调用的时候使用 add()
调用,参数也是放到小括号中,使用起来和普通函数很类似:
var add = function(a, b){
console.log(a + b);
}
add(1, 5); // 6
- 第二种方法,不要名字直接执行,这么做可以在内容形成局部变量和局部函数,防止全局污染。
有两种写法,如下所示:
(匿名函数)();
(匿名函数());
示例:
下面是两种匿名函数执行的写法:
(function(a, b){
console.log(a + b);
})(10, 20); // 输出:30
(function(a, b){
console.log(a + b);
}(10, 20)); // 输出:30
这两种写法的运行结果都是一样的。
除此之外,还有一些不太常用的调用匿名函数的方法,大家也可以动手试一试,例如在 function 前面加一元操作符号:
!function(){ /**/ }();
~function(){ /**/ }();
-function(){ /**/ }();
+function(){ /**/ }();
或者在 function 前面添加 new 关键词:
new function () { /**/ }
new function () { /**/ } ()
- 第三种方法,作为对象的方法调用。
示例:
例如我们创建一个 info
对象,在这个对象中定义属性和方法,然后通过对象,调用方法:
let info = {
name: "xkd",
age: 18,
show:function(){
console.log(this.name + "已经" + this.age + "岁了!")
}
}
info.show(); // 输出:xkd已经18岁了!
- 第四种方法,通过事件调用匿名函数。
示例:
例如在 button
按钮上有一个 id 选择器,然后通过点击事件绑定一个匿名函数:
<body>
<button id = "btn">点击按钮</button>
<script>
var btn = document.getElementById("btn");
// 添加事件
btn.onclick = function(){
console.log("点击事件");
}
</script>
</body>
- 第五种方法,作为另外一个函数的参数调用。
示例:
例如我们将匿名函数作为 show)()
方法的参数调用:
function show(a){
a();
}
show(function(){ console.log("作为参数调用") }); // 作为参数调用