recherche

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

javascript - Quel est le rôle de var xxx=null devant la fonction d'exécution différée setTimeout?

Désolé d'avoir posté ceci pour la première fois..
Je veux créer un effet Une fois que la souris reste sur p pendant deux secondes, certaines fonctions ne seront pas exécutées pendant plus de deux secondes ;
Puis j'ai trouvé. la fonction setTimeout en ligne et je l'ai résolu avec succès, car je suis autodidacte, donc mes bases sont faibles et je dois expliquer certaines choses que je ne comprends pas

.

Au total trois questions sont commentées dans le code, merci beaucoup !
Code :

<script src="jquery.min.js"></script>
<script>
        var timer = null; // 1.此处为什么要在这里声明timmer=null?
        $(function(){
            $("#test").hover(
            function(){
                $(this).html("悬停");
                timer=setTimeout(function(){alert("hello")},2000); // 2.为什么不能直接去掉第
                //一行的声明 ,在此处var timer=setTimeout(...)...
            },
            function(){
                if(timer)  // 3.这里的if语句有什么作用?我试着去掉后函数也能完整运行呀
                    clearTimeout(timer);
                $(this).html("测试"); 
                });
        });   
    </script>
</head>
<body>
    <p id="test">
        测试
    </p>
</body>
伊谢尔伦伊谢尔伦2755 Il y a quelques jours570

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

  • 世界只因有你

    世界只因有你2017-05-19 10:40:43

    1. setTimeout renverra un identifiant entier, qui est le numéro du minuteur. La déclaration d'une variable à l'avance est naturellement utilisée pour stocker le numéro setTimeout会返回一个整数id,是计时器编号,提前声明一个变量自然是存储编号用了;

    2. 为什么不能在这里声明?要知道var是函数作用域的,在function里边声明的变量一出去就没了,你叫另一个匿名函数的clearTimeout到哪去找这个变量?

    3. 这里的if主要是严谨,在setTimeout成功返回计时器编号(因为初始是null,如果没返回肯定就false了)的情况下,才会执行clearTimeout(timer)

       ;
    Pourquoi cela ne peut-il pas être indiqué ici ? Vous devez savoir que var est dans la portée de la fonction. Les variables déclarées dans function disparaîtront dès qu'elles seront sorties. Vous appelez le clearTimeout d'une autre fonction anonyme. > Où puis-je trouver cette variable ? 🎜🎜 🎜🎜Le if ici est principalement rigoureux. Cela n'arrivera que lorsque setTimeout renvoie avec succès le numéro de la minuterie (car la valeur initiale est nulle, si elle ne renvoie pas, elle le sera certainement). être faux) Exécutez la phrase clearTimeout(timer) pour éviter de continuer à exécuter le code d'erreur lorsque l'erreur d'exécution précédente s'est produite. 🎜🎜 🎜

    répondre
    0
  • ringa_lee

    ringa_lee2017-05-19 10:40:43

    Tout d'abord, le timer setTimeout sera effacé après utilisation Afin de savoir quel timer effacer, une variable doit être ajoutée, qui est le changement de timer.
    Deuxièmement, la portée de la fonction. Les variables internes ne sont pas directement accessibles en dehors de la fonction, une variable doit donc être définie en dehors de la fonction pour être utilisée par différentes fonctions.
    Le dernier if(timer) sert principalement à éviter de déclencher une erreur claire lorsque le timer a été fermé.

    répondre
    0
  • 某草草

    某草草2017-05-19 10:40:43

    Merci à vous deux ci-dessus !

    répondre
    0
  • Annulerrépondre