在JavaScript 或任何编程语言中,函数、循环、数学运算符和变量是最广泛使用的工具。本文将告诉您匿名函数和命名函数之间的区别。我们将在本文中讨论了解命名函数和匿名函数的所有必需概念。
匿名函数:顾名思义,“anonymous function” 指的是没有名称或标题的函数。在 JavaScript 中,匿名函数是在没有标识的情况下声明的函数。这是常规函数和匿名函数之间的区别。匿名函数创建后无法访问;它只能通过将其存储为函数值的变量来检索。匿名函数可以有多个参数,但只能有一个表达式。
用法:
function(){ // Function Body }
我们通过例子来理解一下。
示例1:在此示例中,我们构建了一个匿名函数,用于将消息打印到控制台。之后,该函数被保存在测试变量中。我们可以通过调用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 关键字,后跟可用作该函数回调的名称。具有名称或标识符的普通函数称为命名函数。它们可以在表达式中使用或在语句中声明。函数的名称存储在函数体内,这很方便。我们可以使用该名称来获取一个函数来调用自身,或者像每个对象一样检索其属性。
用法:
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!
匿名函数和命名函数之间的区别:
Anonymous functions |
Named Functions |
在 JavaScript 中,匿名函数(函数表达式)是指那些没有名称或标识符来引用的函数;它们被定义为: function(){ //函数体 } |
具有名称或标识符来引用它们的普通函数(函数声明)称为命名函数,定义为: 函数displayMessage(){ //函数..主体 } |
匿名函数永远不会被提升(在编译时加载到内存中)。 | 命名函数被提升(在编译时加载到内存中)。 |
调用匿名函数时,只能在声明行之后调用。 | 可以在声明之前调用名称函数。 |
在 ES6 之前,匿名函数的名称属性被设置为空字符串。 | 在 ES6 之前,命名函数的名称属性被设置为其函数名称。 |
为了更容易编程,匿名函数允许上下文范围。当函数用作数据时,应使用箭头函数。 | 由于函数名称出现在错误日志中,因此命名函数在调试和确定哪个函数产生错误时非常有用。 |
开发 IIFE(即时调用函数表达式)时,匿名函数非常方便。 | 命名函数更容易重用,这有助于创建干净的代码。 |
相关用法
- Javascript Atomics.add( )用法及代码示例
- Javascript Atomics.and()用法及代码示例
- Javascript Atomics.compareExchange( )用法及代码示例
- Javascript Atomics.exchange( )用法及代码示例
- Javascript Atomics.isLockFree( )用法及代码示例
- Javascript Atomics.load( )用法及代码示例
- Javascript Atomics.or( )用法及代码示例
- Javascript Atomics.store( )用法及代码示例
- Javascript Atomics.sub( )用法及代码示例
- Javascript Atomics.xor()用法及代码示例
- Javascript Array.of()用法及代码示例
- Javascript Array.isArray()用法及代码示例
- Javascript ArrayBuffer.isView()用法及代码示例
- Javascript Array valueOf()用法及代码示例
- Javascript Array map()用法及代码示例
- Javascript Array reduce()用法及代码示例
- Javascript Array from()用法及代码示例
- Javascript Array.splice()用法及代码示例
- Javascript Array.from()用法及代码示例
- Javascript Array.join()用法及代码示例
- Javascript Array.findIndex()用法及代码示例
- Javascript Array.fill()用法及代码示例
- Javascript Array findIndex()用法及代码示例
- Javascript Array every()用法及代码示例
- Javascript Array.find()用法及代码示例
注:本文由纯净天空筛选整理自deathmukh大神的英文原创作品 Difference between Anonymous and Named functions in JavaScript。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。