我在想,可能是名字"立即调用功能表达"是不正确的,因为事实上,我们所做的是调用一个匿名的函数声明,所以正确的名称可能是IIFD(立即调用函数声明)。
你怎么看?有意义吗?// function declaration
function add( a, b ) {
return a + b;
}
// function expression
var multiply = function( a, b ) {
return a * b;
}
答案 0 :(得分:4)
没有
函数声明是以关键字function
开头的语句。在任何其他点使用关键字function
,它定义了一个函数表达式。 IIFE看起来像(function() {})()
所以语句以(
开头,而不是function
,所以它是一个函数表达式。
答案 1 :(得分:1)
我们所做的是调用匿名的函数声明
没有匿名函数声明这样的东西。你在哪里听说过这样的事情?可能的用途是什么?它就像落在森林里的一棵树。
尝试输入
function() { }
进入你的控制台,看看它的内容。在Chrome devtools中我得到了
Uncaught SyntaxError: Unexpected token (
这甚至不是有效的语法。
为什么你认为IIFE的形式是
( // <== MARK AS FUNCTION EXPRESSION
function() {...
}()
)
括号精确,将其视为函数表达式,以便可以调用它。