Javascript 使用jquery将函数注册到DOM ready

Javascript 使用jquery将函数注册到DOM ready,javascript,jquery,Javascript,Jquery,假设我添加到First.js: $(document).ready( function () { dosomething A }); function () { dosomething C }); }); $(document).ready( A = function () { dosomething A }); C = function () { dosomething C }); }); 和Second.js: $(d

假设我添加到First.js:

$(document).ready(

function () {
    dosomething A
    });

function () {
    dosomething C
    });
});
$(document).ready(
A = function () {
    dosomething A
    });

C = function () {
    dosomething C
    });
});
和Second.js:

$(document).ready(

function () {
    dosomething B
    });
});
$(document).ready(
A = function () {
    dosomething A
    });

});
DOM就绪后是否会执行所有3个函数

我注册时会是什么情况

到First.js:

$(document).ready(

function () {
    dosomething A
    });

function () {
    dosomething C
    });
});
$(document).ready(
A = function () {
    dosomething A
    });

C = function () {
    dosomething C
    });
});
至Second.js:

$(document).ready(

function () {
    dosomething B
    });
});
$(document).ready(
A = function () {
    dosomething A
    });

});
后者将覆盖第一个

短暂性脑缺血发作

后者将覆盖第一个

不可以,您可以为单个事件分配多个函数


我假设你的语法错误是无意的。按照编写它们的方式,不会执行任何代码。

是的,可以多次绑定同一事件而不会出现问题

是的,第二个代码将替换第一个代码设置的值。

DOM就绪后,是否会执行所有3个函数?

对。每次绑定要在DomReady上执行的内容时,jQuery都会将函数放入一个内部数组中,然后按照与“insert”相同的顺序执行它们

后者将覆盖第一个?

是的,它会,除非你把
var
放在定义之前。JavaScript将把
A
放在窗口范围内,因此下一个定义将覆盖第一个定义

function() {
    var A = 0; // this will only exist within the function
}

function() {
    A = 1; // this will be added to the "global" scope (window).
}

您的第一个示例是无效语法。它将导致javascript解释器抛出异常。您只需将一个函数传递给
$(document).ready(fn)
。一个函数中可以包含多个函数调用,但只能将一个函数传递给
.ready()

您的第二个示例也是一个语法错误-一个额外的
})。如果删除了它,它将工作并执行该函数

first.js
second.js
中的第三个示例也是一个语法错误。您不能将任意javascript作为
.ready()
的参数。它必须是一个具有正确语法的函数引用


现在,如果您在示例中确实提供了合法语法,您可能一直想问的是,您传递给
.ready(fn)
的所有函数都将在文档准备就绪时执行。jQuery保留一个包含所有已传递函数的数组,并在文档准备就绪时执行所有函数。如果使用多个函数多次调用了
.ready()
,则
.ready()
的jQuery文档不会指定调用顺序,不过可以检查源代码,看看顺序可能是什么。

示例代码中有大量语法错误;请复习并改正它
.ready
将函数作为其参数。我假设这是伪代码。我认为问题很清楚,即使在提供的例子中有“语法错误”。@David我不同意;阅读代码时,我必须做出假设性的跳跃,当“结果是什么”是一个问题时,这是不合适的。除非你澄清你认为被覆盖的内容,并纠正语法错误,否则没有人能回答你的问题。我投了赞成票,因为我的假设是“不”是“后者将覆盖第一个?”-1那是不对的。后面的代码将用第一个代码替换设置的值。这甚至不是有效的js,所以不会。你对代码做出了一个假设,但这个问题并不清楚。为什么投反对票?如果你不解释你认为错误的地方,那就无法改善答案。