Maison  >  Article  >  interface Web  >  Quelles sont les différences entre l'utilisation de la boucle for var et l'utilisation de let dans jQuery ?

Quelles sont les différences entre l'utilisation de la boucle for var et l'utilisation de let dans jQuery ?

php中世界最好的语言
php中世界最好的语言original
2018-04-27 13:55:591832parcourir

Cette fois, je vais vous présenter les différences entre l'utilisation de for loopvar et l'utilisation de let in jQuery, et les NotesQu'est-ce que c'est ? Voici des cas pratiques.

Aujourd'hui, j'ai trouvé un problème lors de l'écriture de l'interface de requête jQuery :

Lors de l'envoi d'une requête en utilisant AJAX, une autre requête AJAX était imbriquée, et il a été constaté que le succès du premier succès dans le requête interne La variable de boucle i in ne peut pas être obtenue. Le code spécifique est le suivant :

$.ajax({
    type: "get",
    url: "//////////////////////////",
    success: function (result) {
      rs = JSON.parse(result).data;
      for (var i = 0; i < rs.length; i++) { //用var定义有问题
        var pos_ = ""
        $.ajax({
          type: 'GET',
          async: false,
          dataType: 'jsonp',
          contentType: 'application/json; charset=utf-8',
          url: "///////////////////////////////////",
          success: function (result) {
            console.log(rs[i]) //报错
          }
        })
      }
    }
  })

Dans la fonction de rappel après la deuxième requête ajax, rs[i] signalera un erreur.

  Solution :

Changer la variable var que j'ai déclarée dans la boucle for pour laisser i

Raison spécifique :

Il est dans la boucle for après la première fonction de rappel. Si vous envoyez à nouveau une requête, la boucle for ne s'arrêtera pas, même si vous écrivez une requête synchrone.

Mais si vous utilisez let après avoir déclaré la variable de boucle for, le code ne passera pas à la boucle suivante tant que votre requête n'est pas terminée et que la fonction de rappel n'est pas exécutée.

Cela prend en compte un problème de fermeture, si vous écrivez des déclarations var et let dans des portées différentes.

Soit i sera passé comme variable locale

var i sera passé comme variable globale

Si vous souhaitez passer la variable i à la couche suivante, utilisez laissez déclarer.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Résumé JS des méthodes de nombres aléatoires

Explication détaillée des étapes d'utilisation du module nodeJS

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn