javascript - Erreur signalée lorsque setTimeout remplace setInterval pour implémenter le compte à rebours
ringa_lee
ringa_lee 2017-05-19 10:38:45
0
1
752

Récemment, lors de l'utilisation de vue2 pour créer un projet, j'ai rencontré la nécessité d'un compte à rebours actif lors de l'utilisation de setTimeout pour simuler l'effet de setInterval, quelque chose s'est mal passé (bien sûr, l'utilisation de ce dernier peut facilement résoudre le problème)

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)

Le résultat est l'erreur suivante :

Il semble que l'objet arguments soit introuvable dans le mode strict d'es6...

ringa_lee
ringa_lee

ringa_lee

répondre à tous(1)
小葫芦

L'objet arguments ne peut pas être utilisé lors de l'utilisation de fonctions fléchées, car l'objet n'existe pas dans le corps de la fonction. Si vous souhaitez l'utiliser, vous pouvez utiliser les paramètres Rest à la place.

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

Points à noter lors de l'utilisation des fonctions fléchées Il y a plusieurs points à noter lors de l'utilisation des fonctions fléchées.

(1) L'objet this dans le corps de la fonction est l'objet où il est défini, pas l'objet où il est utilisé.

(2) ne peut pas être utilisé comme constructeur, c'est-à-dire que la nouvelle commande ne peut pas être utilisée, sinon une erreur sera générée.

(3) L'objet arguments ne peut pas être utilisé, car l'objet n'existe pas dans le corps de la fonction. Si vous souhaitez l'utiliser, vous pouvez utiliser les paramètres Rest à la place.

(4) La commande rendement ne peut pas être utilisée, donc la fonction flèche ne peut pas être utilisée comme fonction générateur.

Parmi les quatre points ci-dessus, le premier point est particulièrement remarquable. Le pointeur de cet objet est variable, mais dans une fonction flèche, il est fixe.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal