lar*_*ryq 0 javascript jquery scope
在jQuery中,您可以对各种页面和其他事件进行多次调用,如下所示:
$(document).ready(function() {
Run Code Online (Sandbox Code Playgroud)
并且您可以在此过程中添加多个"就绪"功能定义,您不仅限于一个.当然,这有助于将代码定义为接近其使用位置.
我的问题是,如果在其中一个document.ready函数声明中我声明了一个局部变量使用var,它是否会在document.ready页面也使用的另一个函数声明中可用?
我不确定jQuery在这样的情况下是如何工作的; 它是否以某种方式将各种函数的范围编织在一起,或者当ready事件被触发时,每个函数是否以独立方式运行,每个函数都不知道其他函数的变量.(我猜第二个.)
我的问题是,如果在其中一个
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除非你正在编写一个库,否则我认为我不会主张拥有多个处理程序(甚至是一个).但那是一个不同的话题.
| 归档时间: |
|
| 查看次数: |
791 次 |
| 最近记录: |