()紧跟在函数之后意味着该函数将立即被激发

() right after a function means the function is going to get fired immediately?

本文关键字:函数 意味着 之后      更新时间:2023-09-26

可能重复:
函数声明后的空括号()在javascript中起什么作用?

我正在查看一些Javascript代码,并试图弄清楚是什么}();正好在返回num+10的意思之后。这是否意味着该函数将立即执行?我在哪里可以获得更多关于这方面的信息。

function addToTen(num) {
     return function() {
          return num+10;
     }();
}
addToTen(5); // 15

谢谢,Venn。

是,但前提是它是一个函数表达式,这与函数声明不同。函数声明是定义第一个函数的方式:

function foo(){
}

如果在此之后添加(),则会出现语法错误。如果函数被定义为函数表达式,则添加一组括号会立即执行它。只要函数没有如上定义,它们就是表达式,例如:

(function(){}());
var x = function(){}();
return function(){}();

你的实际例子只是。。。奇怪且毫无意义。这几乎是一个经典的闭包示例,类似于:

function addTo(x){
    return function(y){
        return x + y;
    }
}
var addToTen = addTo(10);
addToTen(5); // 15;

但你的实际例子相当于:

function addToTen(num){
    return num + 10;
}

所有多余的东西都是完全没有必要的。

是,表示函数对象已求值。

就像任何其他函数一样,你有两种方法来看待它:

var myFunction = function(val) {
    return val + 1;
}
  1. 要返回函数对象或将其发送到其他地方,我只需要说myFunction
  2. 如果我想执行它,我说myFunction()

在上面描述的这个闭包或decorator中,您不是返回函数对象本身,而是立即返回执行该函数的值,因此后面会返回()。

是的,它会立即执行,但在本例中的用法没有任何意义。

通常用于anonymous functions创建closure

请参阅为什么需要在同一行调用匿名函数?

我经常使用它的一个地方:

(function($) {
    // secure way to ensure no conflict between $ (jQuery)
    // and another js-framework can happen
    $...
})(jQuery);