setTimeout的作用域及其中的this指向问题

先看一个实例:

setTimeout的常见用法是让某个方法延迟执行。setTimeout方法是挂在window对象下的。

《javascript高级程序设计》中有:“超时调用的代码都是在全局作用域中执行的,因此函数中的this的值在非严格模式下指向window对象,在严格模式下是undefined”。这里讨论的是非严格模式。

setTimeout的延迟执行函数中的this,永远指向window,而setTimeout调用环境中的this,是根据上下文来确定的,默认为window。看下面的例子:

上面的例子可以看出。延迟执行函数中的this的确是指向了window,但是执行函数的其他变量需要根据上下文来确认

原文地址:https://www.cnblogs.com/hopexi/p/7280819.html