Javascript中的自动执行匿名函数

Javascript中的自动执行匿名函数,javascript,jquery,anonymous-function,document-ready,Javascript,Jquery,Anonymous Function,Document Ready,我一直在努力理解匿名函数。我逐渐意识到,在末尾添加额外的括号有助于匿名函数的执行。然而,我也遇到过一些代码,这些代码似乎在没有额外括号的情况下执行匿名函数,令我惊讶的是,我也找不到jqueryready方法的用法。它是这样的:- $(function() { $('#login_form #username').validator({ format: 'alphanumeric', invalidEmpty: true, correct:

我一直在努力理解匿名函数。我逐渐意识到,在末尾添加额外的括号有助于匿名函数的执行。然而,我也遇到过一些代码,这些代码似乎在没有额外括号的情况下执行匿名函数,令我惊讶的是,我也找不到jqueryready方法的用法。它是这样的:-

$(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');
        }
    });

})();

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

$(function() { /* code here */});
是传递匿名函数的函数调用。该
$
函数将在将来某个时候调用该匿名函数。在jQuery中,当DOM加载完毕并准备好进行操作时,它将调用该函数。这是一种我不常用的快捷语法,因为它会让不熟悉jQuery的人感到困惑,但其他人喜欢它的简洁性。这是这方面的简写:

$(document).ready(function() { /* code here */});
我个人觉得这更能自我描述

这些不是自动执行的匿名函数。这是一种不同的结构,用于不同的目的。这只是一个普通的函数调用,就像
ready()
一样,只需向其传递一个函数


第二个构造中的额外参数是不需要的,在这种特殊情况下不需要添加任何内容。

您只需使用特定名称调用函数。函数名为
$
。如果要在调试器中执行某项操作,您将看到它将执行该操作。可以将参数传递给此函数


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

哇。谢谢。@感恩-在这个特殊情况下,这些额外的参数没有添加任何内容,也没有任何用处或需要。在其他情况下,它们是有意义的,但在本例中并非如此,因为函数已经执行。本问题中的代码与jQuery Validate插件没有任何关系,问题也与表单验证无关。移除标签。谢谢。看:好的,谢谢。仍然在学习和习惯这个网站。