Typescript函数返回NaN值但数字类型

时间:2016-09-17 08:15:42

标签: javascript typescript

我有这个倒数计时器功能:

startTimer(duration) {
        this.myTimer = duration;
        setInterval(function () {
            this.myTimer--;
            console.log("TIMER: "+ typeof(this.myTimer) + " "+this.myTimer);
        }, 1000);
    }

我以这种方式打电话:this.startTimer(60);

这是console.logTIMER: number NaN的结果。 因此typeof(this.myTimer)会返回number类型,当我打印其值时,我会获得NaN

为什么我会获得NaN

注意:我正在使用Angular2(typescript),我在构造函数之前以这种简单的方式在组件类中定义了myTimer变量:

export class myComponent {
myTimer;
constructor(private navCtrl: NavController) {}
 // my code (previous function is here)
}

1 个答案:

答案 0 :(得分:2)

像Rayon在评论中所说,在setTimeout函数回调中,您的this函数与startTimer函数不同myTimer,因此undefined不是成员它的。 NaN操作后,--变为var that = this

要解决此问题,您可以使用function startTimer(duration) { this.myTimer = duration; setInterval(() => { this.myTimer--; console.log("TIMER: "+ typeof(this.myTimer) + " "+this.myTimer); }, 1000); } 技巧或使用arrow function

Fatal error: Uncaught exception 'Exception' with message 'Database Error [2014] Commands out of sync; you can't run this command now' in C:\wamp64\www\CubePicker\cube.php on line 21