Javascript 不带窗口的窗口属性
最近,我注意到在函数中使用了“Javascript 不带窗口的窗口属性,javascript,Javascript,最近,我注意到在函数中使用了“event”变量,其中参数和闭包都不包含该变量。 但它是有效的,事件是存在的。看起来“event”指的是window.event 因此,有两个问题: 为什么我可以像访问变量一样访问窗口属性而不引用窗口 如果我们使用的是通常的JavaScript(在我的例子中是TypeScript)代码,而不是处理程序或任何以事件为参数的东西,那么默认的“event”变量中有什么事件 关于事件与窗口事件的说明: 如果要直接在devTools控制台中键入“window.innerHei
event
”变量,其中参数和闭包都不包含该变量。
但它是有效的,事件是存在的。看起来“event
”指的是window.event
因此,有两个问题:
event
”变量中有什么事件窗口
对象的工作方式,因为它表示全局范围。正如我在评论中提到的,您可以使用或不使用窗口访问任何全局属性。
前缀。这是因为全局变量实际上是附加到全局对象的,在本例中,window
——任何东西都不能超出此全局范围。同样,在没有窗口
对象的其他JS环境中,情况并非如此,例如,在节点中,全局对象被命名为global
console.log(window.event);
按钮。addEventListener('click',函数(事件){
console.log(window.event);
});代码>
点击我代码>请提供一些示例代码。我不是100%确定你在问什么“一个全局变量,window
,表示运行脚本的窗口,暴露于JavaScript代码中。”,2.:只读窗口属性事件返回当前由站点代码处理的事件。在事件处理程序的上下文之外,该值始终未定义。您应该避免在新代码中使用此属性,而应该使用传递到事件处理程序函数中的事件它可以解释为什么我在窗口上获取事件-此时可能有另一个处理程序正在执行并等待响应。关于窗口属性的问题仍然存在。我在问题的底部再次描述了。您可以用这种方式指定任何窗口属性或方法,因为window
表示全局范围。正如您所提到的,您可以使用innerHeight
执行此操作,但也可以作为窗口访问HTML标记ID。一个或一个。请注意,这仅适用于web浏览器,而不适用于Node等其他JS环境。当您编写window
时,您正在访问全局作用域的“window”
属性。此属性本身是对全局范围的引用,这就是为什么事件
,窗口.事件
,窗口.窗口.事件
,窗口.窗口.事件
等都引用同一事物的原因。这就是Javascript的设计方式。