2017-08-11 48 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)范围内创建变量一般的最佳实践。