小编Ani*_*mar的帖子

严格模式下“ this”关键字的默认绑定

我正在学习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

javascript this

4
推荐指数
2
解决办法
455
查看次数

标签 统计

javascript ×1

this ×1