我遇到了一个这样写的函数:
var x = function() {
return function(v) {
console.log(v);
}
}();
写入x('Lorem Ipsum')
将立即在console.log
中运行此功能,并且我将返回Lorem Ipsum
作为记录值。我感到困惑的是最后的括号是什么,它与IIFE有何不同?
此外,如果我删除了结尾的括号,并尝试通过在x('Lorem ipsum')
中键入console.log
来运行它,则会得到返回函数,而不是记录的计算值,如下所示:
return function(v) {
console.log(v);
}
相反,如果我想在删除结束括号后从函数中获取一个值,则应该编写类似x()('Lorem Ipsum')
的内容。然后,我将传递的字符串返回到console.log
中。
有人可以解释这两个函数(一个带括号的功能,另一个不带括号)的功能吗?
答案 0 :(得分:3)
我感到困惑的是最后的括号是什么,它与IIFE有何不同?
不是。它是 IIFE。
因此,您有一个IIFE返回一个函数(然后将其分配给x
)。返回的函数接受一个参数,并将该参数传递给console.log
。