window.setTimeout()和setTimeout()之间有什么区别?

use*_*240 21 javascript settimeout

我想知道它们之间的区别

window.setTimeout(myFancyFunciton, 1000); 
Run Code Online (Sandbox Code Playgroud)

setTimeout(myFancyFunciton, 1000);
Run Code Online (Sandbox Code Playgroud)

两者似乎完全一样.你什么时候应该使用其中一个?

Osw*_*ald 30

JavaScript在由全局对象定义的环境中运行.可以在不明确引用对象的情况下调用全局对象的方法(即没有obj.function()符号).

在浏览器中运行JavaScript时,全局对象由文档对象模型(DOM)提供.DOM的全局对象有一个方法setTimeout().这就是你可以打电话的原因setTimeout().

DOM指定全局对象具有名为的属性window,该属性是对全局对象的引用.这就是为什么你可以调用window.setTimeout()和(通过传递)window.window.setTimeout(),window.window.window.setTimeout()和(你猜对了)window.window.window.window.window.window.window.window.window.setTimeout().这是同一个对象的所有方法.


Mad*_*iha 12

假设我们正在谈论基于浏览器的JavaScript:没有区别.setTimeout()简单地省略window.,暗示.它们的效果完全相同.

它是编码风格和偏好的选择.

对于未在浏览器中运行的JavaScript,该window对象未定义,因此window.setTimeout()将失败.setTimeout()但是,会奏效.

  • `setTimeout()`不是ECMAScript规范的一部分,因此它取决于特定的全局对象是否可行. (3认同)