只要我从jquery $()。ready()中调用我的javascript代码;函数不应该有权访问我的JavaScript代码中声明的所有变量?javascript的顺序在页面中是否重要?
我有来自.js文件和内联的代码。
我试图访问一个变量,它说它没有定义,但是当我做一个视图源时,我可以看到这个变量。
只要我从jquery $()。ready()中调用我的javascript代码;函数不应该有权访问我的JavaScript代码中声明的所有变量?javascript的顺序在页面中是否重要?
我有来自.js文件和内联的代码。
我试图访问一个变量,它说它没有定义,但是当我做一个视图源时,我可以看到这个变量。
您不一定有权访问该变量。这实际上取决于变量的范围以及相对于其使用位置的地方。如果该变量是在单独的ready()块中定义的,则即使该变量在全局空间中,但如果该准备好的块在引用它的那个之后运行,也可能无法访问该变量。为了可用,定义变量的代码需要在引用它的代码之前执行,并且它需要位于相同的范围内。
+1更多信息:http://docs.jquery.com/Events /就绪#FN – ATorras 2009-08-24 15:58:03
是的,你可以访问所有的顶级变量。但是你正在寻找的那个可能是使用dom ready事件定义的,即使它是一个窗口变量,处理程序可能会在你的后面被触发。或者它在动态注入的JavaScript文件中。
不,您应该总是按照需要的顺序加载Javascript。如果您使用的是一些jQuery插件,那么您应该在这些插件之前加载jQuery,因为它们可能会在您不知情的情况下实例化使用jQuery对象的某些内容。
对于我的web应用程序,我加载JavaScript的以下顺序:
我希望我的回答很有帮助。
你是对的,访问其他文件中的变量应该没有问题。范围或简单的拼写错误可能存在问题。您尝试访问的变量的范围是什么,以及您尝试使用它的范围?
JavaScript的顺序确实很重要。 JavaScript是在页面内的线性方式执行,所以如果你有两个<script>
标签是这样的:
<script src="test1.js"></script>
<script src="test2.js"></script>
test1.js
将被加载并首先运行,然后test2.js
。在test1.js
中全局声明的任何内容都可以在第二个脚本中访问,但不能以其他方式访问。
这样做的副作用是,脚本也块在加载时,如果test1.js
花了很长的时间来加载,你会看到减慢页面加载时间。这就是为什么建议在页面底部放置任何不是必须的JavaScript,以便在JavaScript加载速度降低之前几乎整个事情都会显示出来。
在jquery中的“准备就绪”事件中,理论上你应该可以访问任何作为DOM一部分加载的东西,因为在DOM结构完全构建之前,这在技术上应该不会触发。
您可以在页面的任何部分设置变量值,但在函数代码之前将它们声明在页面的顶部会更容易。
Josh
请点击这里。有一个答案,这解释了很多http://stackoverflow.com/questions/7609276/javascript-function-order-why-does-it-matter – iveetoo 2013-08-23 12:15:28