Javascript ()函数的后面意味着函数将立即被触发?

Javascript ()函数的后面意味着函数将立即被触发?,javascript,programming-languages,Javascript,Programming Languages,可能重复: 我正在查看一些Javascript代码,并试图找出}();在return num+10之后的右键表示。这是否意味着该函数将立即执行?我在哪里可以得到更多关于这方面的信息 function addToTen(num) { return function() { return num+10; }(); } addToTen(5); // 15 谢谢, Venn.是的,它会立即执行,但在本例中,这种用法没有任何意义 通常用于匿名函数创建闭包 看

可能重复:

我正在查看一些Javascript代码,并试图找出}();在return num+10之后的右键表示。这是否意味着该函数将立即执行?我在哪里可以得到更多关于这方面的信息

function addToTen(num) {
     return function() {
          return num+10;
     }();
}
addToTen(5); // 15
谢谢,
Venn.

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

通常用于
匿名函数
创建
闭包

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

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

    $...

})(jQuery);

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

通常用于
匿名函数
创建
闭包

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

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

    $...

})(jQuery);

是的,这意味着函数对象被评估

与任何其他函数一样,您有两种方式来看待它:

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

  • 在上面描述的这个闭包或装饰器中,不是返回函数对象本身,而是返回立即执行该函数的值,因此随后返回()

    与任何其他函数一样,您有两种方式来看待它:

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

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

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

    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;
    }
    

    所有额外的东西都是完全不必要的。

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

    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;
    }
    

    所有额外的东西都是完全不必要的。

    是的,这是一个高级javascript概念,函数一定义就执行。我不是一个JS忍者,但我可以告诉你,这个函数可以用来避免全局名称空间污染。好问题!其他人对此也很好奇:是的,这是一个高级javascript概念,函数一定义就执行。我不是一个JS忍者,但我可以告诉你,这个函数可以用来避免全局名称空间污染。好问题!其他人对此也很好奇: