我正在学习this关键字的工作原理,并读到,当一个函数被调用为简单明了,没有任何上下文对象或new关键字时,this关键字只是引用了global / window对象。但是,如果函数使用严格模式,则this关键字将设置为undefined。所以我写了这段代码来看看它是如何工作的:
function foo(){
"use strict";
alert(this.a);
}
var a = "Global A";
var obj = {
a : "Object's A",
foo : foo
}
setTimeout(obj.foo, 1000);
Run Code Online (Sandbox Code Playgroud)
我以为我会收到一条错误消息:Uncaught TypeError:无法读取undefined的属性“ a”。但让我吃惊,产量为全球一个。函数foo()以严格模式编写。但是,此关键字仍指向全局对象。为什么输出Global A而不是TypeError?