我怎样才能访问里面的一些变量
$(document).ready(function(){
var foo=0;
var bar = 3;
});
从谷歌浏览器控制台?如果我尝试 alert(foo),我会收到一条消息,指出它没有定义。
我怎样才能访问里面的一些变量
$(document).ready(function(){
var foo=0;
var bar = 3;
});
从谷歌浏览器控制台?如果我尝试 alert(foo),我会收到一条消息,指出它没有定义。
使用调试器设置断点。当调试器停止时,您将获得对它们的完全访问权限。
告诉您将它们放在全局范围内的其他答案很糟糕。不要仅仅因为你不知道如何使用正确的工具而使用不好的做法。
您无法访问这些变量,因为它们是在函数闭包中定义的。唯一可以做到的方法是在函数范围之外对它们进行全局引用。
var foo, bar;
$(document).ready(function(){
foo = 0;
bar = 3;
});
为什么不做一个适当的暴露变量?
$(document).ready(function(){
var foo=0;
var bar = 3;
$.exposed = {
foo: foo,
bar: bar
}
});
通过执行检查您的变量
console.log($.exposed.bar)
你不能,因为它们在封闭空间中。这里解释了闭包是如何工作的(JavaScript 闭包是如何工作的?)。$(document).ready
要访问变量,只需在函数内设置断点
如果您确实需要从代码的不同部分访问这些变量(例如,在准备好文档时对其进行初始化,然后在其他地方访问它们),那么您必须在函数闭包之外声明它们。
当且仅当情况如此时,我不喜欢弄乱全局空间。我建议您为此使用基础对象:
var myObj = {};
$(function() {
myObj.foo = 0;
myObj.bar = 3;
});
请注意,只有在加载文档后才会设置它们!因此alert(myObj.foo);
(或类似的东西)在$(function() { ... });
块之后立即放置将产生undefined
!
如果您只需要在该上下文中访问它们,则不要在函数之外声明任何内容。并尝试使用其他方法调试您的代码。例如,使用 chromeconsole.log
非常有帮助。
$(document).ready(function(){
window.foo=0;
window.bar = 3;
});
您将这些变量公开到全局范围内(真的不建议)
在 $(document).ready() 之外定义它们,然后在内部也可以访问它们。
var foo = 0, bar = 3;
$(document).ready(function(){
alert(foo);
});
实际上有一个hackish方法。您可能不应该使用它。设置断点。话虽如此,这是代码:
$(document).ready(
readyClosure = function(access){
var x = 5;
return eval(access);
}
);
readyClosure('x'); // returns 5