recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Erreur signalée lorsque setTimeout remplace setInterval pour implémenter le compte à rebours

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_leeringa_lee2793 Il y a quelques jours771

répondre à tous(1)je répondrai

  • 高洛峰

    高洛峰2017-05-19 10:40:45

    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.

    répondre
    0
  • Annulerrépondre