IIFE模式名称不正确?

时间:2015-05-13 13:05:22

标签: javascript

我在想,可能是名字"立即调用功能表达"是不正确的,因为事实上,我们所做的是调用一个匿名的函数声明,所以正确的名称可能是IIFD(立即调用函数声明)。

你怎么看?有意义吗?

// function declaration
function add( a, b ) {
  return a + b;
}

// function expression
var multiply = function( a, b ) {
  return a * b;
}

2 个答案:

答案 0 :(得分:4)

没有

函数声明是以关键字function开头的语句。在任何其他点使用关键字function,它定义了一个函数表达式。 IIFE看起来像(function() {})()所以语句以(开头,而不是function,所以它是一个函数表达式。

答案 1 :(得分:1)

  

我们所做的是调用匿名的函数声明

没有匿名函数声明这样的东西。你在哪里听说过这样的事情?可能的用途是什么?它就像落在森林里的一棵树。

尝试输入

function() { }

进入你的控制台,看看它的内容。在Chrome devtools中我得到了

Uncaught SyntaxError: Unexpected token (

这甚至不是有效的语法。

为什么你认为IIFE的形式是

(                       // <== MARK AS FUNCTION EXPRESSION
    function() {...
    }()
)

括号精确,将其视为函数表达式,以便可以调用它。