gpt4 book ai didi

javascript - 匿名函数中哪些变量可用?

转载 作者:行者123 更新时间:2023-11-28 13:37:28 25 4
gpt4 key购买 nike

关于范围,我一直感到困惑:

this.init = function(){
var t = this;
setTimeout(function(){
// why is t still available here?
t.initgame();
// but not this?
this.initgame();
}, 500);
}

this.initgame = function() {
// yada yada
}

我知道在匿名函数内部,作用域与外部不同。但为什么在上面的例子中,变量“t”在超时函数中可用,而“this”不起作用?

最佳答案

问题是 setTimeout 是以 window 作为作用域调用的。

使用专用变量来存储 this (t) 是一种完全有效且常用的解决方案。

在现代浏览器上,bind有时很方便:

setTimeout((function(){
// use this
}).bind(this), 500);

关于javascript - 匿名函数中哪些变量可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20402857/

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