javascript - 在 JS 中声明函数 : Named and Unamed expression

标签 javascript anonymous-function function-expression

最近我开始研究 JS 库 Typeahead作为预测搜索框的解决方案。然而,在查看实现它的代码后,我开始更深入地研究事物,它导致我在 javascript 中声明函数。 .

据我所知,实现这一目标有 3 种主要方法:

  1. 函数声明
  2. 函数表达式
  3. 函数构造

仔细观察function expressions然后它引导我到 anonymous functions 。我对这些的理解是,它们实际上是 function expression没有名字?

我的问题是关于命名函数表达式和匿名函数之间的区别,为什么我会选择使用匿名函数?匿名函数有什么好处(如果有的话)?

如果您看到下面的内容(我知道这是一个非常非常简单的示例),那么它们似乎几乎做了完全相同的事情?我似乎无法区分它们。

 //Named function expression
   var add = function add(a,b){
       var result = a+b;
       console.log('adding ' + a + ' and ' + b + ' = ' + result);
   }
   add(6,2);

   //Anonymous function expression
   var multiply = function(a,b){
       var result = a*b;
       console.log('multiplying ' + a + ' by ' + b + ' = ' + result);
   };
   multiply(10,6);

   //Named function called immediately
   var divide = function myfunction(a,b){
       var result = a/b;
       console.log('dividing ' + a + ' by ' + b + ' = ' + result);
   }(10,5);

   //Anonymous function called immediately
   var subtract = function (a,b)
   {
       var result = a - b;
       console.log('subtracting ' + b + ' from ' + a + ' = ' + result);
   }(10,5);

顺便说一句,这是促使我写这篇文章的问题:Explanation of Typeahead.js substringMatcher function

作者在代码中使用了匿名函数。不管怎样,如果有人能为我解决这个问题,我真的很感激。另外,在你问之前,我确实已经用谷歌搜索过这个问题,并被带到了各种不同的网站,概述了这些差异,但我更愿意在这里询问社区。

最佳答案

命名函数表达式可以递归地调用自身。此外,它们的名称会显示在堆栈跟踪中,这有助于调试。

除此之外,这只是代码风格的问题。

关于javascript - 在 JS 中声明函数 : Named and Unamed expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33915998/

相关文章:

javascript - "is not a function"代码中有另一个不相关的函数时出错

重新设置闭包变量

javascript - 在 JavaScript 中,为什么我不能立即调用函数声明?

JavaScript 私有(private)方法 : function expression vs function declaration

javascript - 位于 for-each 中的记录器的引用错误

javascript - Ajax 负载使内容加倍

javascript - Discord.js 机器人,临时静音命令不会静音

javascript - 拆分导致 "Object doesn' t 支持此属性或方法”异常

php - 除了使用 php 的 eval 之外,还有其他方法可以调用此函数吗?

javascript - JavaScript 混淆中的函数表达式