在函数末尾加括号?

时间:2019-08-24 12:17:05

标签: javascript function

我遇到了一个这样写的函数:

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中。

有人可以解释这两个函数(一个带括号的功能,另一个不带括号)的功能吗?

1 个答案:

答案 0 :(得分:3)

  

我感到困惑的是最后的括号是什么,它与IIFE有何不同?

不是。它是 IIFE。

因此,您有一个IIFE返回一个函数(然后将其分配给x)。返回的函数接受一个参数,并将该参数传递给console.log