【问题标题】:JS function definition : meaning of the last parentheses [duplicate]JS函数定义:最后一个括号的含义[重复]
【发布时间】:2012-12-15 17:30:40
【问题描述】:

可能重复:
What is the purpose of a self executing function in javascript?
What does this mean? (function (x,y)){…}){a,b); in JavaScript

我有时会看到类似这些示例的函数定义:

(function() {
    ....     
})();

(function(param) {
    ....     
})(JQuery);

(function(chat, Friend) {
    ....     
})(chat, chat.module("friend");

经过一些网络研究,我没有找到任何关于最后括号信息含义的信息。

有人解释如何使用它吗?或者只是指向一个解释含义的网络链接?

【问题讨论】:

标签: javascript jquery function


【解决方案1】:

最后一个刹车的意思

(function() {
    ....     
})();

最后的()会导致函数内部的代码立即执行。

(function(param) {
    ....     
})(JQuery);

最后的(JQuery)导致函数内部的代码立即执行,将JQuery作为参数传递给它。

(function(chat, Friend) {
    ....     
})(chat, chat.module("friend"));

最后的(chat, chat.module("friend"))导致函数内部的代码立即执行,将chatchat.module("friend")作为参数传递给它。

【讨论】:

  • 代码示例 #1 和 #2 中的括号不匹配。你应该为提问者解决这个问题。
  • @JanDvorak:谢谢。我没有注意到,我认为这是一个复制粘贴错误。我现在修好了。
【解决方案2】:

假设我们有:

function add1 (x) {
    return x+1;
}

然后我们可能会调用add1(5) 来获取值 6。

但是有了括号,我们可以用(function (x) {return x+1;})(5)替换它,而不是调用add1(5)。基本上这会创建一个函数,并立即将其应用于值 5,而当我们调用 add1(5) 时,我们使用的是命名/定义的函数。

【讨论】:

    【解决方案3】:

    看看这个问题:What is this practice called in JavaScript?

    基本上,该函数将使用您传递的参数执行。 在本例中,param 的值为 jQuery

    (function(param) {
        ....     
    })(JQuery);
    

    【讨论】:

    • 应该是报错。 })(JQuery); 行有效,}(JQuery)); 也有效,但 })(JQuery)); 无效,除非您的起始函数语句无缘无故看起来像 ((function ($) {
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多