javascript – Fehler gemeldet, wenn setTimeout setInterval ersetzt, um den Countdown zu implementieren
ringa_lee
ringa_lee 2017-05-19 10:38:45
0
1
765

Bei der Verwendung von vue2 zum Erstellen eines Projekts bin ich kürzlich auf die Notwendigkeit eines aktiven Countdowns gestoßen. Bei der Verwendung von setTimeout zur Simulation des Effekts von setInterval ist ein Fehler aufgetreten (letzteres kann das Problem natürlich leicht lösen)

let myTimer = setTimeout( () => {
    if (diffTimer > 0) {
        hours = Math.floor(diffTimer/3600);
        minutes = Math.floor((diffTimer/60)%60);
        seconds = Math.floor(diffTimer%60);
        this.hours = hours > 9 ? hours : '0' + hours;
        this.minutes = minutes > 9 ? minutes : '0' + minutes;
        this.seconds = seconds > 9 ? seconds : '0' + seconds;
    } else {
        clearTimeout(myTimer);
    }
    diffTimer--;
    setTimeout(arguments.callee,1000);
},1000)

Das Ergebnis ist der folgende Fehler:

Es scheint, dass das Argumentobjekt im strikten Modus von es6 nicht gefunden werden kann...

ringa_lee
ringa_lee

ringa_lee

Antworte allen(1)
小葫芦

使用箭头函数不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替。

http://es6.ruanyifeng.com/?se...

使用注意点 箭头函数有几个使用注意点。

(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。

(2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。

(3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替。

(4)不可以使用yield命令,因此箭头函数不能用作Generator函数。

上面四点中,第一点尤其值得注意。this对象的指向是可变的,但是在箭头函数中,它是固定的。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage