为什么立即调用的函数表达式(IIFE)和自执行匿名函数不同?

3

很明显,EcmaScript中,函数在调用时会创建一个新的执行上下文。函数内定义的所有变量和函数仅能在该函数作用域内访问。但是当我们使用闭包时,变量和函数可以在外部上下文中访问。

IIFE是一种立即调用的函数表达式。它非常简单。

但是为什么IIFE与自执行匿名函数不同,对我来说不是完全清楚!


相关文章:http://benalman.com/news/2010/11/immediately-invoked-function-expression/立即调用函数表达式 - Felix Kling
关于自执行匿名函数:https://dev59.com/pVMI5IYBdhLWcg3wfbfN - Aaditya Sharma
1个回答

8

它们是相同的,因为一个立即执行函数表达式(IIFE)不一定是匿名的,并且它们不会自行执行。但由于这个原因,它被重命名为 IIFE

请考虑以下内容:

(function bleh() {
    alert('I am not anonymous, i have a name!');
})(); //<-- invoked like any other function

“renamed” 可能不是正确的术语,同一概念有许多名称 - “立即函数”,“自执行函数”等。 - David Hellsing
我在这里找到了Mark Dalgleish提供的出色解释:http://www.youtube.com/watch?feature=player_detailpage&v=KRm-h6vcpxs#t=699s
  • 1)IIFE不会自行执行,它们像任何其他函数一样被调用。
  • 2)IIFE不必是匿名的,重要的是它们是函数表达式。
- jjpcondor
我的错,是我太分心了。 - jjpcondor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接