只要我在jquery $()。ready()中调用我的javascript代码;函数不应该访问我的javascript代码中声明的所有变量吗?
我的代码来自.js文件和内联。
我试图访问一个变量,它说它没有定义,但是当我做一个viewource时,我可以看到那个变量。
答案 0 :(得分:6)
javascript的顺序确实很重要。 Javascript在页面中以线性方式执行,因此,如果您有两个<script>
标记,请执行以下操作:
<script src="test1.js"></script>
<script src="test2.js"></script>
test1.js
将首先加载并运行,然后test2.js
。在test1.js
中全局声明的任何内容都可以在第二个脚本中访问,但不能相反。
这样做的副作用是脚本在加载时也会阻止,因此如果test1.js
需要很长时间才能加载,您会发现这会减慢页面加载时间。这就是为什么建议在页面底部放置任何不是立即需要的javascript,这样几乎整个事情都会在javascript加载速度降低之前显示出来。
在jquery中的“on ready”事件中,理论上你应该可以访问作为DOM的一部分加载的任何东西,因为在完全构建DOM结构之前,这应该在技术上不会触发。
答案 1 :(得分:4)
您无需访问该变量。它实际上取决于变量的范围以及相对于变量使用位置的定义。如果变量是在单独的ready()块中定义的,那么即使它位于全局空间中,如果在您引用它之后运行该就绪块,也可能无法访问它。为了可用,定义变量的代码需要在引用它的代码之前执行,并且它需要在同一范围内。
答案 2 :(得分:1)
不,您应该始终按照需要的顺序加载Javascript。如果您正在使用一些jQuery插件,那么您应该在这些插件之前加载jQuery,因为它们可能会在您不知道的情况下实例化使用jQuery对象的内容。
对于我的Web应用程序,我按以下顺序加载javascripts:
我希望我的回答很有帮助。
答案 3 :(得分:1)
你是对的,访问其他文件中的变量应该没有问题。范围或简单的拼写错误可能存在问题。您尝试访问的变量在什么范围内,以及您尝试使用它的范围?
答案 4 :(得分:0)
是的,您可以访问所有顶级变量。但是你正在寻找的那个可能是使用dom ready事件定义的,即使它是一个窗口变量,处理程序可以在你的之后被触发。或者它是在动态注入的JavaScript文件中。
答案 5 :(得分:0)
您可以在页面的任何部分设置变量值,但在功能代码之前将它们更容易在页面顶部声明。
约什