变量范围

问题描述:

我有两个JavaScript文件包含在我的网站标题。两个文件都包含几乎相同的变量变量范围

如果我有标题这样

<head> 
    <script src="http://127.0.0.1/js/file1.js" type="text/javascript"></script> 
    <script src="http://127.0.0.1/js/file2.js" type="text/javascript"></script> 
</head> 

是否有可能访问从file2.js file1.js定义瓦尔?

这是我真的想

file1 
    $(function() { 
     var x = 1; 
    }); 

file2 
    $(function() { 
     console.log(x); //This dosen`t work. Can`t access var 
    }); 
+0

'是否可以从file2.js中访问file1.js中定义的变量?你能举个例子吗? – 2010-10-05 14:10:16

+0

Duplicate:http://*.com/questions/751882/html-javascript-include-file-variable-scope – Bertvan 2010-10-05 14:11:41

是的,这应该工作。只要变量是一个脚本中的全局变量,它就会出现在另一个脚本中。

是的,你在DOM中有一个全局对象,这两个文件都写入变量。基本上,如果file1说:

foo = bar; 

然后在文件2,您可以访问foo

如果你明确要声明一个全局变量,你可以使用window对象,它是在一个网页的全局对象:

window.foo = 'bar'; 

更多关于全局对象:http://www.quirksmode.org/js/this.html

如果你认为包括javascri的pt文件当然代替脚本的实际内容。如果变量是全局变量,file2将有权访问它。

你可以做到这一点的唯一方法是给每个文件自己的“命名空间”

var File1 = { 
    X: 2 
}; 


var File2 = { 
    X: 3 
}; 

以防万一这是不明确的。我的意思是每个文件的内容必须包装在一个命名对象中,它将充当命名空间。

这是不可能的,你这样做。变量必须存在于全局范围内才能跨文件使用。在你的例子中,x在匿名函数的范围内定义。如果你把它改成

// file1 
var x; 
$(function() { 
    x = 1; 
}); 

,那么你可以从你的第二个文件访问x