gpt4 book ai didi

javascript - "this"指的是 "window"对象没有按预期工作

转载 作者:行者123 更新时间:2023-12-04 08:45:58 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Do let statements create properties on the global object?

(5 个回答)


11 个月前关闭。




我用 做了一些实验此 关键字,我发现了一个奇怪的问题。当变量声明为 时无功然后 正确引用这个变量。但是如果我声明了与 相同的变量让 const 然后 丢失引用并在控制台中显示未定义。

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()

最佳答案

当您在严格模式之外运行此代码(如此处)时,this关键字默认为全局对象 - 在浏览器中为 window . (在严格模式下是 undefined 所以 a() 会抛出错误。)var之间的行为差​​异和 let/const是事实的一个简单结果 var - 声明的全局变量与全局( window )对象上的属性相同,而使用 let 声明的变量(即使是全局变量)不会发生这种情况。或 const .
参见例如 MDN :

Just like const the let does not create properties of the window object when declared globally (in the top-most scope).

关于javascript - "this"指的是 "window"对象没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64324268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com