Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法理解JavaScript中的某些概念_Javascript_Scope - Fatal编程技术网

无法理解JavaScript中的某些概念

无法理解JavaScript中的某些概念,javascript,scope,Javascript,Scope,在下面的示例中,给出了以下行: 全局变量(或函数)可以覆盖窗口变量(或函数)。 任何函数,包括窗口对象,都可以覆盖全局变量和函数。 我不明白这句话是怎么说的。在那一段上面,你可以找到: HTML中的全局变量 对于JavaScript,全局范围是完整的JavaScript环境 在HTML中,全局范围是窗口对象。所有全局变量都属于窗口对象 结合您问题中的引号-这意味着由于全局范围实际上是窗口对象-因此可以覆盖全局函数/变量 以下是一个例子: console.log(window.Math.PI);

在下面的示例中,给出了以下行:

全局变量(或函数)可以覆盖窗口变量(或函数)。 任何函数,包括窗口对象,都可以覆盖全局变量和函数。
我不明白这句话是怎么说的。

在那一段上面,你可以找到:

HTML中的全局变量 对于JavaScript,全局范围是完整的JavaScript环境

在HTML中,全局范围是窗口对象。所有全局变量都属于窗口对象

结合您问题中的引号-这意味着由于全局范围实际上是
窗口
对象-因此可以覆盖全局函数/变量

以下是一个例子:

console.log(window.Math.PI);
数学={
PI:5
}
log(Math.PI)浏览器在
窗口
对象上放置某些“全局”(即可在任何文件中的任何位置访问)函数和变量。一个这样的例子是函数
window.setTimeout
,它在给定的延迟后执行其参数

您还可以访问这些全局
窗口。*
变量,而不使用窗口前缀,即

window.setTimeout === setTimeout
这意味着,如果指定给具有冲突名称的全局变量,则可以“覆盖”浏览器默认值-

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

这就是为什么不在全局(
窗口
)范围内创建变量通常是最佳做法。

查找其他教程。这是一个非常奇怪的解释全局范围概念的方法。我不知道为什么它区分变量和函数。函数存储在变量中。首先它说全局变量可以覆盖窗口变量,然后它说窗口对象可以覆盖全局变量。恰恰相反。非常令人困惑的一句话是“在HTML中,全局作用域是窗口对象。所有全局变量都属于窗口对象。”那么说全局变量可以覆盖全局变量的目的是什么呢?当您在全局作用域中定义变量/函数时,您可以覆盖窗口函数/变量。理解这一点很重要。那里的语言可能不完美,但它是正确的。你能通过纠正所说语言中存在的任何困惑来写一个答案吗?