2017-06-15 44 views
0
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); 
} 

我预计该日志:为什么当我记录值[ts] [ionic2]时未定义?

6 
6 
6 
6 
6 

但我发现了:

undefined 
undefined 
undefined 
undefined 
undefined 

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

回答

2

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

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

我觉得你this被绑定到setTimeout的内部运作。你有没有尝试过这样的功能? setTimeout(function() { ... }.bind(this), 5000)