2017-08-11 73 views
2

website以下行給出:無法理解某些概念在JavaScript

你的全局變量(或功能)可以覆蓋窗口的變量(或功能)。任何函數,包括窗口對象,都可以覆蓋全局變量和函數。

我無法理解這是什麼意思。

+1

找到一個不同的教程。這是解釋全球範圍概念的一種非常奇怪的方式。 – Brad

+0

我不確定爲什麼區分變量和函數。函數存儲在變量中。 – 4castle

回答

2

上面那款你可以找到這樣的:

在HTML 使用JavaScript全局變量,在全球範圍內是完整的JavaScript環境。

在HTML中,全局作用域是窗口對象。所有全局變量都屬於窗口對象。

與你的問題的聯合報價 - 這意味着,由於全球範圍實際上是window對象 - 它可能覆蓋全局函數/變量。

下面是一個例子:

console.log(window.Math.PI); 
 

 
Math = { 
 
    PI: 5 
 
} 
 

 
console.log(Math.PI);

+0

首先它說全局變量可以覆蓋窗口變量,然後它說窗口對象可以超過全局變量。相反。很混亂 – Sonevol

+0

重要的句子有「在HTML中,**全局範圍是窗口**對象,所有全局變量**屬於窗口對象**。」 – Dekel

+0

那麼說全局變量可以覆蓋全局變量的目的是什麼? – Sonevol

2

瀏覽器把一定的 「全球性」(即,在任何文件的任何地方可訪問的)的window對象函數和變量。一個這樣的例子是函數window.setTimeout,它在給定的延遲後執行它的參數。

您也可以訪問這些全局window.*變量,而在所有的窗口前綴,即

window.setTimeout === setTimeout 

也就是說,如果你分配到一個全局變量有衝突的名稱,就可以「覆蓋」瀏覽器默認意味着 -

window.setTimeout === setTimeout 
setTimeout = 'myString' 
window.setTimeout === 'myString' 

這就是爲什麼它不是在全球(window)範圍內創建變量一般的最佳實踐。