![](/img/trans.png)
[英]declaring local variables inside document ready or inside function in different scope
[英]Console access to Javascript variables local to the $(document).ready function
我怎样才能访问里面的一些变量
$(document).ready(function(){
var foo=0;
var bar = 3;
});
来自谷歌Chrome控制台? 如果我尝试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闭包如何工作? )。 要访问varible,只需在$(document).ready
函数内设置一个断点
如果您确实需要从代码的不同部分访问这些变量(例如,在文档就绪时初始化它们,然后在其他地方访问它们),那么您必须在函数闭包之外声明它们。
只有在这种情况下,我才不会惹恼全球空间。 我建议你使用一个基础对象:
var myObj = {};
$(function() {
myObj.foo = 0;
myObj.bar = 3;
});
请注意 ,只有在加载文档后才能设置它们! 因此alert(myObj.foo);
(或类似的东西)紧跟在$(function() { ... });
块将产生undefined
!
如果你只需要访问他们上下文中,那么不申报的功能以外的任何东西。 并尝试使用其他方法调试您的代码。 例如,使用chrome, console.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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.