2011-01-21 26 views
1
<script type="text/javascript"> 
     $(document).ready(function() { 
      var SOME_ID= 234; 

     }); 

    </script> 
<script type="text/javascript" src="<%= HtmlExtension.ScriptFile("~/somefile.js") %>"></script> 

.js文件只是使用SOME_ID值,但我收到一个错误,说没有定义SOME_ID。在页面上我声明了一个js变量,包含js文件似乎无法访问它?

这不是理论上的工作吗?

+2

如果您移动变种的文件准备好之外,它的工作原理如预期? – Lance 2011-01-21 17:06:44

回答

1

您的变量是在您的匿名函数的范围内定义的。将它移动到准备好的处理程序之外,它应该可以工作。

6

您已经在匿名函数中声明了局部变量。如果您希望它是全局变量,请改用​​,或将其从匿名函数中移出。

例如,或者:

<script type="text/javascript"> 
    $(document).ready(function() { 
     window.SOME_ID= 234; 

    }); 
</script> 

<script type="text/javascript"> 
    var SOME_ID= 234; 
    $(document).ready(function() { 

    }); 
</script> 

不管怎样,外部文件可以访问它要么SOME_ID(不合格)或window.SOME_ID,因为全局变量的性质全局对象(在浏览器上为window)。

+0

注意:虽然在浏览器中使用窗口是安全的,但它并不总是javascript的全局上下文。 – Hemlock 2011-01-21 17:10:04

2

你已经在一个匿名函数中声明了一个局部变量,这个函数只能在这个函数中访问。你需要外界声明它:

var SOME_ID = 0; 
$(function() { 
    SOME_ID = 234; 
}); 
1

这个变量的作用域是函数表达式(FE)传递给ready方法 - 它不会在今年范围之外。

你需要做,如果你想使用var全球其他脚本能够访问它:

var SOME_ID; 
$(document).ready(function() { 
    SOME_ID = 234; 
}); 
相关问题