先看一个实例:
setTimeout的常见用法是让某个方法延迟执行。setTimeout方法是挂在window对象下的。
《javascript高级程序设计》中有:“超时调用的代码都是在全局作用域中执行的,因此函数中的this的值在非严格模式下指向window对象,在严格模式下是undefined”。这里讨论的是非严格模式。
setTimeout的延迟执行函数中的this,永远指向window,而setTimeout调用环境中的this,是根据上下文来确定的,默认为window。看下面的例子:
上面的例子可以看出。延迟执行函数中的this的确是指向了window,但是执行函数的其他变量需要根据上下文来确认。