【发布时间】:2021-01-27 03:29:35
【问题描述】:
我对 this 关键字进行了一些实验,发现了一个奇怪的问题。当一个变量被声明为 var 时,this 正确地引用了这个变量。但是,如果我声明了与 let 或 const 相同的变量,那么 this 会丢失引用并在控制台中显示未定义。
var prop = "outer"; // not working if let or const.
let foo = {
prop: "inner",
show() {
console.log(this.prop)
}
}
let a = foo.show;
let b = foo.show.bind(foo);
a()
b()
【问题讨论】:
-
@adiga 我不相信您标记的副本非常适合这个问题。它确实解释了这个 sn-p 中的
a调用发生了什么 - 但问题似乎接受了这一点,问题更多的是为什么在使用let或const时不会发生这种情况,哪个据我所知,链接的问题根本没有解决。 (虽然我还没有读完所有的cmets。) -
"
this正确引用此变量。" - 不,这绝不是正确的行为。当然,this可能会在您不在上下文中调用该方法时以草率模式引用全局对象,但您永远不应该使用那个“特性”。在严格模式下,this是正确的undefined。 -
@RobinZigmond 修复了正确的重复目标 :-)
标签: javascript