2015-08-21 101 views
0

我最近遇到這個http://www.w3schools.com/js/js_scope.asp,在那裏我瞭解了「自動全局變量」。以下是你如何使用它:未定義變量類型(自動全局變量)

// code here can use carName 

function myFunction() { 
    carName = "Volvo"; 

     // code here can use carName 
} 

但是,它可以有多高?我擔心其他文件可以訪問它,如果它的全球。如果我使用AngularJS,其他控制器可以使用它嗎?其他文件可以使用它嗎?

+0

你是什麼意思其他文件???僅供參考:w3schools不是那裏最好的參考。 – epascarello

+0

其他模塊。 (擁有自己的控制器) – John

+0

Global是全球性的,任何事物都可以使用它們。 JS文件和範圍之間沒有關係,就好像它們都在一個大文件中。這就是爲什麼使用'var'很重要並且不會污染全局名稱空間的原因。 – epascarello

回答

0

在JavaScript中,而不var創建變量是相同的設定它的全局對象上作爲屬性(以及在瀏覽器中,globalwindow

nameWithoutVar = 1; 
// the above is the same as 
window.nameWithoutVar = 1; 

這意味着任何其他腳本在加載該頁面的瀏覽器可以訪問nameWithoutVar,一樣可以訪問locationdocument

全局變量被認爲是這個原因一個非常糟糕的主意,因爲ē正在使用相同的命名空間。如果你必須使用全局變量†,一定要記錄它,並嘗試命名空間,以便它不可能與任何其他變量衝突。

†如果你不確定,你可能不需要。