何时使用匿名函数?

时间:2015-12-08 15:19:55

标签: javascript function

例如下面是一个放在括号中的匿名函数,所以现在函数可以存储为变量并在其他地方调用,如数字2所示,但是如何调用脚本1来运行?如果没有名字,如何识别它?以及如何将匿名函数更改为已定义的函数?

**Number 1**
(function() {
// Do something
})();


**Number 2** 
(var funcName = function() {
// Do something
})();

funcName(); 

2 个答案:

答案 0 :(得分:1)

是的,这些是匿名函数,但它们也是立即调用/调用的函数,因此不需要在以后引用名称。

立即调用函数表达式(IIFE)有很多用途,但一种是使用函数来建立不污染全局的命名空间

答案 1 :(得分:1)

第一个函数立即被调用,因为后跟调用函数的()

然后,如果您要从()语句周围删除var(这是一个错误):

出于同样的原因,第二个函数也会被立即调用。

存储在funcName中的值(如果它是一个函数,则调用它,如果它不是函数则会导致错误)是第二个函数的返回值 (由您表示为// Do something的代码定义 - “某事”需要包含“返回函数”。)

  

如果没有名字,如何确定?

名称仅适用于调试器(在堆栈跟踪等中它们非常非常有用)。要识别要调用的函数,可以像访问任何其他对象或基元一样访问它们(通过变量,属性等)。函数声明只是在当前作用域中创建一个具有匹配名称的变量。