jquery的$(document).ready()中定义变量的范围问题

[code="js"]




Hello World



<body>
    <p>this page test scope.</p>
</body>

[/code]

[code="js"]
$(document).ready(function() {
alert("scope1.js...");
var wahaha = "kyfxbl";
});
[/code]

[code="js"]
$(document).ready(function() {
alert("scope2.js...");
alert(document.wahaha);
alert(window.wahaha);
});
[/code]

请教一下,看我贴的代码,应该能明白我的意图了。我在scope1.js中定义了一个wahaha变量,在scope2.js中就取不到了,无论是用window.wahaha还是document.wahaha,都打出undefined。因为我对闭包的概念和jquery的源码都不太了解,所以搞不懂这个问题。请指教。

究竟$(document).ready(fn);中定义的变量或者函数,是在什么地方呢?跨文件怎么才能取到呢?如果能简要讲解一下原理就更好了,谢谢。

var wahaha = "kyfxbl";

是函数内的局部变量了,
放到window作用域下就可以了, 比如去掉var
wahaha = "kyfxbl"

由于两个$(document).ready异步,所以你不知道谁先执行或谁先完成。

那么无论如何,将wahaha放在任何一个地方都是错误的,即使执行成功也有异步的风险。
唯一的可能是将
var wahaha = "kyfxbl";

alert(wahaha);

放在一个文件里。

否则,将之放在全局变量里,甚至任何一个能够共享的变量里。但先保证程序执行是同步的