jquery javascript加载变量作用域
我试图从外部js文件中获取一些配置,因此似乎我需要在jquery javascript加载变量作用域,javascript,jquery,scope,Javascript,Jquery,Scope,我试图从外部js文件中获取一些配置,因此似乎我需要在$(document).ready(function(){….)中进行配置。保存配置对象的变量需要对所有函数进行全局访问。没有任何理由让所有函数都位于document ready函数中 从我所读到的内容来看,下面的内容应该可以使app.config在全球范围内可用,但事实并非如此 window.app = {}; $(document).ready(function(){ app.config = window[$('body').a
$(document).ready(function(){….
)中进行配置。保存配置对象的变量需要对所有函数进行全局访问。没有任何理由让所有函数都位于document ready函数中
从我所读到的内容来看,下面的内容应该可以使app.config
在全球范围内可用,但事实并非如此
window.app = {};
$(document).ready(function(){
app.config = window[$('body').attr('data-app')];
});
console.log(app.config);
这会产生错误
app.config未定义。
。我假设该变量在文档就绪中可以全局访问,但我需要它在任何地方都可以全局访问。我将如何做到这一点?如果可能,请解释文档就绪中和文档就绪外的范围!在您为其分配一个值。在触发ready
事件之前,您不会为其赋值,但您会立即查看该值(此时它仍然是未定义的
)
作为比较:
window.app = {};
$('button').on('click', function(){
app.config = 1
});
console.log(app.config);
在单击按钮之前,不会将config
设置为1
同样的原则。实际的执行顺序如下:
1. app = {}
2. create listener
3. console.log app.conig
4. document is ready
5. app.config is initalized
您调用console.log(app.config)
太早,因为app.config
包含任何内容
初始化配置后使用配置的更好方法是以下代码:
$(document).ready(function(){
app.config = window[$('body').attr('data-app')]
# you should use config only after it's initialized
useConfig()
# call other functions here too
})
function useConfig() {
console.log(app.config)
}
它是全局可用的。$('body').attr('data-app')的值可能未定义。 例如:
window.app = {};
$(document).ready(function(){
app.config = window['Attr'];
});
console.log(app.config);
$(document).ready(函数(){});
将在
document.onreadystatechange= function () {
if (document.readyState == "complete") {
}
}.//This is one ways of implementing $(document).ready();
在您的例子中,
console.log()
将在readyState
计算完成之前被调用。显示这样的执行顺序很有帮助,并解释了我为什么会遇到问题,而不是如何解决问题。脚本中有很多函数将依赖配置数据,但仅仅丢弃文档rea中的所有内容似乎是错误的dy函数。有更好的解决方案吗?@Ally查看我的更新回答如何更好地完成OK,因此任何需要配置数据的函数都必须在文档中调用。ready
函数才能使用变量。但是如果文档.ready
函数之外的另一个函数调用需要配置数据的函数?那么变量是否可用?可能不可用。目前我将所有函数放在document.ready
中,这样它就可以工作了,但在某种程度上它似乎不是正确的方法。@Ally不应该有任何这样的函数,它在配置初始化之前调用依赖配置的函数。您应该切换到这种类型根据您在“传统”编程中所习惯的方式进行思考。如果日志是从document ready函数中输出的,则该值定义为ok并起作用