2017-06-15 42 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)