javascript的顺序在页面中是否重要?

时间:2009-08-24 15:53:18

标签: javascript jquery

只要我在jquery $()。ready()中调用我的javascript代码;函数不应该访问我的javascript代码中声明的所有变量吗?

我的代码来自.js文件和内联。

我试图访问一个变量,它说它没有定义,但是当我做一个viewource时,我可以看到那个变量。

6 个答案:

答案 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:

  • 外部库(jQuery,Prototype,ExtJS)
  • 基于这些库构建的插件
  • 我的自定义javascripts

我希望我的回答很有帮助。

答案 3 :(得分:1)

你是对的,访问其他文件中的变量应该没有问题。范围或简单的拼写错误可能存在问题。您尝试访问的变量在什么范围内,以及您尝试使用它的范围?

答案 4 :(得分:0)

是的,您可以访问所有顶级变量。但是你正在寻找的那个可能是使用dom ready事件定义的,即使它是一个窗口变量,处理程序可以在你的之后被触发。或者它是在动态注入的JavaScript文件中。

答案 5 :(得分:0)

您可以在页面的任何部分设置变量值,但在功能代码之前将它们更容易在页面顶部声明。

约什