2010-10-05 264 views
0

我有兩個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://stackoverflow.com/questions/751882/html-javascript-include-file-variable-scope – Bertvan 2010-10-05 14:11:41

回答

0

是的,這應該工作。只要變量是一個腳本中的全局變量,它就會出現在另一個腳本中。

0

是的,你在DOM中有一個全局對象,這兩個文件都寫入變量。基本上,如果file1說:

foo = bar; 

然後在文件2,您可以訪問foo

如果你明確要聲明一個全局變量,你可以使用window對象,它是在一個網頁的全局對象:

window.foo = 'bar'; 

更多關於全局對象:http://www.quirksmode.org/js/this.html

0

如果你認爲包括javascri的pt文件當然代替腳本的實際內容。如果變量是全局變量,file2將有權訪問它。

0

你可以做到這一點的唯一方法是給每個文件自己的「命名空間」

var File1 = { 
    X: 2 
}; 


var File2 = { 
    X: 3 
}; 

以防萬一這是不明確的。我的意思是每個文件的內容必須包裝在一個命名對象中,它將充當命名空間。

2

這是不可能的,你這樣做。變量必須存在於全局範圍內才能跨文件使用。在你的例子中,x在匿名函數的範圍內定義。如果你把它改成

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

,那麼你可以從你的第二個文件訪問x