摘要:在本教程中,您将了解 JavaScript 匿名函数,它们是无名的函数。
JavaScript 匿名函数简介
匿名函数是一个 函数,没有名称。以下是如何定义匿名函数
(function () {
//...
});
Code language: JavaScript (javascript)
请注意,如果您不将匿名函数放在括号 ()
内,您将收到语法错误。括号 ()
使匿名函数成为一个表达式,它返回一个函数对象。
匿名函数在其初始创建后不可访问。因此,您通常需要将其分配给一个变量。
例如,以下显示了一个显示消息的匿名函数
let show = function() {
console.log('Anonymous function');
};
show();
Code language: JavaScript (javascript)
在此示例中,匿名函数在 function
关键字和括号 ()
之间没有名称。
因为我们需要稍后调用匿名函数,所以我们将匿名函数分配给 show
变量。
由于将匿名函数分配给 show 变量的整个赋值构成了一个有效的表达式,因此您不需要将匿名函数包装在括号 ()
内。
使用匿名函数作为参数
在实践中,您经常将匿名函数作为参数传递给其他函数。例如
setTimeout(function() {
console.log('Execute later after 1 second')
}, 1000);
Code language: JavaScript (javascript)
在此示例中,我们将一个匿名函数传递到 setTimeout()
函数中。setTimeout()
函数在 1 秒后执行此匿名函数。
请注意,函数是JavaScript 中的一等公民。因此,您可以将函数作为参数传递给另一个函数。
立即调用函数执行
如果您想在声明后立即创建函数并执行它,您可以像这样声明匿名函数
(function() {
console.log('IIFE');
})();
Code language: JavaScript (javascript)
输出
IIFE
工作原理。
首先,定义一个函数表达式
(function () {
console.log('Immediately invoked function execution');
})
Code language: JavaScript (javascript)
此表达式返回一个函数。
其次,通过添加尾部括号 ()
来调用函数
(function () {
console.log('Immediately invoked function execution');
})();
Code language: JavaScript (javascript)
有时,您可能想将参数传递到匿名函数中,像这样
let person = {
firstName: 'John',
lastName: 'Doe'
};
(function () {
console.log(person.firstName + ' ' + person.lastName);
})(person);
Code language: JavaScript (javascript)
输出
John Doe
箭头函数
ES6 引入了 箭头函数 表达式,它为声明匿名函数提供了一种简写方式。
例如,此函数
let show = function () {
console.log('Anonymous function');
};
Code language: JavaScript (javascript)
…可以使用以下箭头函数缩写
let show = () => console.log('Anonymous function');
Code language: JavaScript (javascript)
类似地,以下匿名函数
let add = function (a, b) {
return a + b;
};
Code language: JavaScript (javascript)
…在功能上等同于以下箭头函数
let add = (a, b) => a + b;
Code language: JavaScript (javascript)
总结
- 匿名函数是无名的函数。
- 使用匿名函数可以作为其他函数的参数或作为立即调用函数执行。
本教程是否有帮助?