document.ready()中的局部变量和其他已定义的函数

lar*_*ryq 0 javascript jquery scope

在jQuery中,您可以对各种页面和其他事件进行多次调用,如下所示:

$(document).ready(function() {
Run Code Online (Sandbox Code Playgroud)

并且您可以在此过程中添加多个"就绪"功能定义,您不仅限于一个.当然,这有助于将代码定义为接近其使用位置.

我的问题是,如果在其中一个document.ready函数声明中我声明了一个局部变量使用var,它是否会在document.ready页面也使用的另一个函数声明中可用?

我不确定jQuery在这样的情况下是如何工作的; 它是否以某种方式将各种函数的范围编织在一起,或者当ready事件被触发时,每个函数是否以独立方式运行,每个函数都不知道其他函数的变量.(我猜第二个.)

T.J*_*der 7

我的问题是,如果在其中一个document.ready函数声明中我声明了一个局部变量使用var,它是否会在document.ready页面也使用的另一个函数声明中可用?

不,它们是您传递给函数的局部变量document.ready.

我不确定jQuery在这样的情况下是如何工作的; 它是否以某种方式将各种函数的范围编织在一起,或者当ready事件被触发时,每个函数是否以独立方式运行,每个函数都不知道其他函数的变量.(我猜第二个.)

你是对的.:-)实际上,jQuery 无法处理函数的执行上下文,这些函数由JavaScript引擎管理.

但是,通过将它们全部放在容器函数中,可以使它们共享父执行上下文:

(function() {
    // Shared by all functions within this block
    var foo = 42;

    // ...

    $(document).ready(function() {
        if (foo === 42) {
            // ...
            --foo;
        }
    });

    // ...

    $(document).ready(function() {
        if (foo > 0) {
            // ...
            --foo;
        }
    });

})();
Run Code Online (Sandbox Code Playgroud)

ready除非你正在编写一个库,否则我认为我不会主张拥有多个处理程序(甚至是一个).但那是一个不同的话题.