【发布时间】:2018-09-26 06:17:10
【问题描述】:
看一个简单的 IIFE 示例
((x) => x)(1) // returns 1
如果我从一个可以作为回调传递的常规(但匿名)函数的角度来考虑这个:
setTimeout(function() {alert(1)}, 1000)
匿名函数仍在被调用。 IIFE 类似地看起来像作为回调传递给返回函数的某个函数。
看起来这个返回的函数是用 1 的参数调用的,然后 IIFE 被 some function
这是正确的吗? some function 定义在什么对象上?它是窗口/全局吗?或者这是 JavaScript 实现功能而不是语言功能?
【问题讨论】:
-
setTimeout(function() {alert(1)}, 1000)这不是 IIFE -
The IIFE looks like it is passed as a callback to some function that returns a function.该描述与您的示例都不匹配。 IIFE 是一个立即调用的函数表达式。第一个示例是 IIFE,因为...您立即执行它。但你不会在任何地方通过它。第二个示例没有 IIFE。很简单,IIFE 或多或少定义了myFynction(a) { return a+1 },然后执行它myFunction(2) //returns 3,但一次完成,而不是两行。 -
可能有用的资源:@987654321@stackoverflow.com/questions/8228281/…
标签: javascript iife