Как я могу получить доступ к некоторым переменным внутри
$(document).ready(function(){
var foo=0;
var bar = 3;
});
с консоли Google Chrome? Если я попробую оповестить (foo), я получу сообщение, что оно не определено.
Как я могу получить доступ к некоторым переменным внутри
$(document).ready(function(){
var foo=0;
var bar = 3;
});
с консоли Google Chrome? Если я попробую оповестить (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
!
Если вам нужен только доступ к ним внутри этого контекста, тогда не объявляйте ничего вне функции. И попробуйте отладить ваш код другими способами. Например, с хром console.log
весьма полезен.
$(document).ready(function(){
window.foo=0;
window.bar = 3;
});
Вы публикуете эти vars в глобальном масштабе (действительно не рекомендуется)
определяют их вне $(document).ready(), а затем также получают доступ к ним внутри.
var foo = 0, bar = 3;
$(document).ready(function(){
alert(foo);
});
На самом деле есть хакерский подход. Вероятно, вы не должны его использовать. Установите точку останова. При этом здесь код:
$(document).ready(
readyClosure = function(access){
var x = 5;
return eval(access);
}
);
readyClosure('x'); // returns 5