【发布时间】:2024-09-23 13:50:01
【问题描述】:
在调试时,我总是使用 Firebug 并尝试调用函数并显示变量。但是,当函数或变量在 $(document).ready 中定义时,我不能。
如何访问这些变量?我可以输入命名空间之类的内容,例如document.ready.variableName,或者我怎么能看到这个?
提前谢谢你。
【问题讨论】:
标签: javascript jquery
在调试时,我总是使用 Firebug 并尝试调用函数并显示变量。但是,当函数或变量在 $(document).ready 中定义时,我不能。
如何访问这些变量?我可以输入命名空间之类的内容,例如document.ready.variableName,或者我怎么能看到这个?
提前谢谢你。
【问题讨论】:
标签: javascript jquery
全局变量和函数可以通过将它们分配为window的属性来创建:
$(function(){
window.foo = function foo() {
// …
}
});
foo() 应该在该处理程序执行后的任何地方都可以访问。
【讨论】:
如何访问这些变量?
嗯,你不能。您在匿名函数中定义的所有内容(例如您在 $(document).ready 中使用的内容)都将作用于该匿名函数。它是私有的,外部无法访问。
因此,如果您需要检查在其范围内定义的某些私有变量,您可以将您的 console.log 放在 $(document).ready 中。
【讨论】:
window.foo = ... 然后检查 window.foo 因为 window 对象是公共的并且代表全局范围。
window.foo = function() { alert('bar'); };。然后window.foo();.
这就是调试的目的。在所有主流浏览器(包括 IE)中,您都可以在 javascript 代码中设置断点。完成后,脚本会停止,您可以检查变量。
这里有一些链接:
【讨论】:
这取决于您如何在.ready() 函数中声明变量。如果你做var x = "test",那么不行,它们只能在 ready 函数的范围内访问。如果您执行x="test" 之类的操作,那么它在全局范围内可用,您可以像alert(x); 或alert(window.x); 一样访问它
您可能不想在 ready 函数内定义变量,但如果您尝试在 ready 函数之外使用它们。
【讨论】:
在全局范围内声明变量:
例如
<script type="text/javascript">
var globalVar = null;
$(document).ready(
function() {
globalVar = "This is the value";
}
);
function TestFunc() {
alert(globalVar);
}
</script>
在这里,如果您在页面加载后的任何时间调用TestFunc(),您将看到在 ready() 函数中分配的值。
【讨论】:
不确定我是否完全理解了这个问题,但你不能在文档之外声明变量准备好了吗?
var a = "bar";
$(document).ready(function(){
a = "foo";
});
如果您使用的是 firebug,您应该可以在文档就绪内调用 console.log,这可能会为您提供所需的内容。
【讨论】:
如果你有
var x = "foo"
$(document).ready(function(){
alert(x); // foo
});
您可以在任何地方看到x 变量,但如果您将变量y 声明到文档就绪,它将只能在文档就绪内访问:
var x = "foo"
$(document).ready(function(){
alert(x); // foo
var y = "bar"
alert(y); // bar
});
alert(y); // undefined
【讨论】: