我的网站标题中包含两个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 :(得分:2)
你做这件事的方式是不可能的。变量必须存在于全局范围内才能跨文件使用。在您的示例中,x
在匿名函数的范围内定义。如果您将其更改为
// file1
var x;
$(function() {
x = 1;
});
然后您可以从第二个文件中访问x
。
答案 1 :(得分:0)
答案 2 :(得分:0)
是的,DOM中有一个全局对象,两个文件都将变量写入。基本上如果file1说:
foo = bar;
然后在file2中,您可以访问foo
如果您明确要声明全局变量,则可以使用window
对象,它是网页中的全局对象:
window.foo = 'bar';
有关全局对象的更多信息:http://www.quirksmode.org/js/this.html
答案 3 :(得分:0)
如果您考虑将javascript文件替换为脚本的实际内容,那么当然。如果变量是全局变量,则file2将可以访问它。
答案 4 :(得分:0)
唯一可以做到这一点的方法是为每个文件提供自己的“命名空间”。
var File1 = {
X: 2
};
var File2 = {
X: 3
};
以防这是不明确的。我的意思是每个文件的内容必须包装在一个命名对象中,该对象将充当命名空间。