📜  JavaScript 中匿名函数和命名函数的区别

📅  最后修改于: 2022-05-13 01:56:38.900000             🧑  作者: Mango

JavaScript 中匿名函数和命名函数的区别

在 JavaScript 或任何编程语言中,函数、循环、数学运算符和变量是使用最广泛的工具。本文将告诉您匿名函数和命名函数之间的区别。我们将在本文中讨论所有必需的概念,以了解命名和匿名函数的输入和输出。

匿名函数:顾名思义,“匿名函数”是指没有名称或标题的函数。在 JavaScript 中,匿名函数是在没有标识的情况下声明的东西。这是常规函数和匿名函数之间的区别。匿名函数创建后无法访问;它只能由作为函数值存储的变量检索。匿名函数可以有多个参数,但只有一个表达式。

句法:

function(){
   // Function Body
}

让我们通过例子来理解。

示例 1:我们构建了一个匿名函数,在此示例中将消息打印到控制台。之后,该函数被保存在测试变量中。我们可以通过调用 test() 来调用该函数。

Javascript


Javascript


Javascript


Javascript


Javascript


Javascript


输出:

This is an anonymous function!

示例 2:匿名函数也可以接受参数。

Javascript


输出:

This is an anonymous function!

我们确实可以将匿名函数作为参数传递给另一个函数,因为 JavaScript 允许使用高阶函数。

示例 3:这里,我们向 setTimeout() 方法发送一个匿名函数作为回调函数。这会在 1500 毫秒后调用匿名函数。

Javascript


输出:

This is an anonymous function!

命名函数:在 JavaScript 中,命名函数只是一种引用函数的方式,该函数使用函数关键字后跟一个可以用作该函数回调的名称。具有名称或标识符的普通函数称为命名函数。它们可以在表达式中使用或在语句中声明。函数的名称存储在它的主体中,这很方便。我们可以使用这个名字来获取一个函数来调用它自己,或者像每个对象一样检索它的属性。

句法:

function displayMessage(){
 // function..body
}

让我们通过一些例子来理解这个概念:

示例 1:我们将在此示例中定义一个打印消息的普通函数。

Javascript


输出:

This is a named function! 

示例 2:您可以将命名函数添加到对象上的变量中,然后调用对象上的函数。

Javascript


输出:

This is a named function!
 

示例 3:在 JavaScript 中,命名函数是调用函数的最常见方式之一。你会一直碰到他们。这里值得一提的一点是如何使用 return 关键字从函数中返回一个值。这不仅限于命名函数。

Javascript


输出:

This is a named function!

匿名函数和命名函数之间的区别:

Anonymous functions

Named Functions

In JavaScript, anonymous functions (function expression) are those that are produced without a name or identifier to refer to them; they are defined as :

function(){

  // Function Body

}

Normal functions (function declaration) having a name or identifier to refer to them are referred to as named functions and are defined as:

function displayMessage(){

// function..body

}

Anonymous functions are never hoisted (loaded into memory at compilation).Named functions are hoisted (loaded into memory at compilation).
When invoking an anonymous function, you can only call it after the declaration line.A name function can be invoked before declaration.
Before ES6, the name properties of anonymous functions were set to the empty string.Before ES6, the name properties of named functions were set to their function names.
For easier programming, anonymous functions allow context scoping. When functions are utilized as data, arrow functions should be used.Because the function name appears in the error log, named functions are highly useful in debugging and determining which function produced an error.
Anonymous functions can be very handy when developing IIFEs (Instantly Invoked Function Expressions).Named functions are easier to reuse, which aids in the creation of clean code.