JavaScript 匿名函数和命名函数的区别
在JavaScript或其他编程语言中,函数、循环、数学运算符和变量是最常用的工具。本文将告诉您匿名函数和命名函数的区别。我们将在本文中讨论所有必要的概念,全面了解命名和匿名函数。
匿名函数: 正如其名,”匿名函数”指的是没有名称或标题的函数。在JavaScript中,匿名函数是在没有标识的情况下声明的函数。这是常规函数和匿名函数之间的区别。创建后无法访问匿名函数,只能通过将其存储为函数值的变量来获取。匿名函数可以有多个参数,但只能有一个表达式。
语法:
function(){
// Function Body
}
让我们通过示例来理解。
示例 1: 在这个示例中,我们构建了一个匿名函数,它会将一条消息打印到控制台。然后,这个函数被保存在test变量中。我们可以通过调用test()来调用这个函数。
Javascript
<script>
var test = function () {
console.log("This is an anonymous function!");
};
test();
</script>
输出:
This is an anonymous function!
示例 2: 匿名函数也可以接受参数。
JavaScript
<script>
var test = function (platform) {
console.log("This is an anonymous ", platform);
};
test("function!");
</script>
输出:
This is an anonymous function!
我们确实可以将匿名函数作为参数传递给另一个函数,因为JavaScript允许高阶函数。
示例3: 在这里,我们将一个匿名函数作为回调函数发送给setTimeout()方法。这将在1500毫秒后调用匿名函数。
Javascript
<script>
setTimeout(function () {
console.log("This is an anonymous function!");
}, 1500);
</script>
输出:
This is an anonymous function!
命名的函数: 在JavaScript中,命名函数只是一种引用函数的方式,它使用函数关键字后面跟着一个可以用作该函数的回调函数的名称。具有名称或标识符的普通函数被称为命名函数。它们可以在表达式中使用或在语句中声明。函数的名称存储在其主体中,这很方便。我们可以使用该名称使函数调用自己,或者访问其与每个对象相似的属性。
语法:
function displayMessage(){
// function..body
}
让我们通过一些示例来理解这个概念:
示例 1: 在这个示例中,我们将定义一个普通函数来打印一条消息。
Javascript
<script>
function test() {
console.log (`This is a named function!`);
};
</script>
输出:
This is a named function!
示例2: 您可以将命名函数添加到对象的变量上,然后在对象上调用该函数。
Javascript
<script>
function test() {
console.log (`This is a ${this.func}`);
}
const func = {
func: 'named function!',
test
}
func.test();
</script>
输出:
This is a named function!
示例3: 在JavaScript中,命名函数是调用函数最频繁的一种方式之一。你经常会遇到它们。这里值得一提的另一点是如何使用return关键字从函数中返回一个值。这并不仅限于命名函数。
JavaScript
<script>
function createPerson(firstName, lastName) {
return {
firstName: firstName,
lastName: lastName,
getFullName() {
return firstName + ' ' + lastName;
}
}
}
let name = createPerson('This is a', 'named function!');
console.log(name.getFullName());
</script>
输出:
This is a named function!
匿名函数和命名函数的区别:
| 匿名函数 | 带名称的函数 |
|---|---|
| 在JavaScript中,匿名函数(函数表达式)是指在没有名称或标识符引用的情况下生成的函数;它们的定义如下: function(){ // 函数体 } | 带有名称或标识符引用的普通函数(函数声明)被称为带名称的函数,其定义如下: function displayMessage(){ // 函数体 } |
| 匿名函数不会被提升(在编译时加载到内存中)。 | 带名称的函数会被提升(在编译时加载到内存中)。 |
| 在调用匿名函数时,只能在声明行之后调用它。 | 可以在声明之前调用带名称的函数。 |
| 在ES6之前,匿名函数的名称属性设置为空字符串。 | 在ES6之前,带名称的函数的名称属性设置为它们的函数名。 |
| 为了更简单地编程,匿名函数允许上下文作用域。当函数被用作数据时,应使用箭头函数。 | 因为函数名出现在错误日志中,带名称的函数在调试和确定哪个函数产生错误方面非常有用。 |
| 在开发IIFE(立即调用的函数表达式)时,匿名函数非常方便。 | 带名称的函数更容易重用,有助于创建干净的代码。 |
极客教程