在Javascript中自行执行匿名函数

时间:2014-09-27 06:21:42

标签: javascript jquery anonymous-function document-ready

我一直在努力了解匿名功能。我已经意识到在最后添加额外的括号有助于匿名函数执行。但是,我也遇到了似乎在没有额外括号的情况下执行匿名函数的代码,令我惊讶的是我也找不到使用jquery ready方法。它类似于: -

$(function() {

    $('#login_form #username').validator({
        format: 'alphanumeric',
        invalidEmpty: true,
        correct: function() {
            $('#login_form #username').text('Thanks');
        },
        error: function() {
            $('#login_form #username').text('Plese fill username field');
        }
    });

});

上述文件只包含在包含表单的html文件中。我似乎无法理解上面的代码是如何自动执行的。有人可以帮助解释一下吗?此外,额外括号会有什么不同,例如: -

$(function() {

    $('#login_form #username').validator({
        format: 'alphanumeric',
        invalidEmpty: true,
        correct: function() {
            $('#login_form #username').text('Thanks');
        },
        error: function() {
            $('#login_form #username').text('Plese fill username field');
        }
    });

})();

2 个答案:

答案 0 :(得分:2)

$是jQuery中的一个函数。所以,$()是一个函数调用。和

$(function() { /* code here */});

是一个函数调用,您将匿名函数传递给。那个$函数将在将来的某个时间调用该匿名函数。在jQuery的情况下,当DOM完成加载并准备好进行操作时,它将调用该函数。这是一种我不主要使用的快捷语法,因为它让那些不熟悉jQuery的人感到困惑,但其他人喜欢它简洁。这是简写​​:

$(document).ready(function() { /* code here */});

我个人觉得这更具自我描述性。

这些不是自动执行的匿名函数。这些是用于不同目的的不同结构。这只是一个简单的函数调用,就像ready()一样,只需添加一个函数即可。

不需要你的第二个结构的额外的parens,并且在这种特殊情况下不添加任何东西。

答案 1 :(得分:0)

您只是调用具有特定名称的函数。函数的名称是$。如果您在调试器中执行某些操作$(),您将看到它将执行它。您可以将参数传递给此函数。

在您的情况下,您的参数是一个函数。但你可以这样做:$(console.log(1))