第一次发表海报。我试着在发布之前搜索答案。
我是javascript的新手,来自Delphi / pascal背景。我习惯了必须明确说明的事情。当我看到包含setTimeout或setInterval的代码时(请参阅此处: http://www.w3schools.com/js/tryit.asp?filename=tryjs_setinterval1),我注意到它看起来像是一个内在函数。但我认为它实际上是Windows对象的一种方法。
所以它看起来像“窗口”。部分是可选的。这是一些特定于Window对象的东西吗?或者在javascript中识别任何没有包含对象名称的指定方法?如果全局范围中有另一个变量有一个名为setTimeout的方法,会发生什么?编译器/解释器如何知道使用哪一个?
非常感谢,
凯文
答案 0 :(得分:3)
在Javascript中,有一种称为全局范围的东西。在浏览器上,全局范围对象为window
。如果在函数外部创建变量,则默认情况下会进入全局范围,即窗口。
在窗口对象上调用方法或引用变量时,可以选择包含window
。
答案 1 :(得分:1)
它不是窗户的窗户(没有'在最后)。 据我所知,javascript有3个本地范围,[clouser],全球
每个变量或函数首先在本地范围内查找,然后是clouser,最后如果在其间的任何地方找不到它将在全局范围内进行检查。
在图像中,您将看到全局范围显示为Window对象,这意味着全局范围内的任何内容都会出现在窗口对象中。
在chrome devtools控制台中的代码下面复制粘贴
function outerFunction() {
var a = 10;
debugger;
function innerFunction() {
'use strict';
var b = 10;
debugger;
console.log(a);
}
innerFunction();
}
outerFunction();
在第一次调试时