当我记录值[ts] [ionic2]时为什么说未定义?

时间:2017-06-15 13:12:18

标签: typescript ionic2

public lvl:number = 6;

constructor(public navCtrl: NavController) {   
  console.log('Start Page Constructor');
  setTimeout(function(){
        for(var i=0;i<4;i++){
            console.log(this.lvl);
        }
   }, 5000);
}

我希望日志为:

6
6
6
6
6

但我得到了:

undefined
undefined
undefined
undefined
undefined

我不明白我在这里做错了什么。

2 个答案:

答案 0 :(得分:2)

因为当您使用this语法进行回调时,function () {}会发生更改。使用arrow functions获取正确的this

setTimeout(() => {
    for(var i=0;i<4;i++){
        console.log(this.lvl);
    }
}, 5000);

答案 1 :(得分:0)

我认为您的this绑定在setTimeout中运行。你试过像这样绑定这个函数吗? setTimeout(function () { ... }.bind(this), 5000)