recherche

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

javascript - Comment implémenter les fermetures ES5 avec ES6

Comment implémenter le code suivant à l'aide d'es6 let,

for(var i = 0; i < 3;i++) {
    (function(j){
        $.ajax({
            url: 'xxx',
            success: function(){
                console.log(j);
            }
        })(i);
    })
}
三叔三叔2741 Il y a quelques jours946

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

  • 给我你的怀抱

    给我你的怀抱2017-06-30 10:01:41

    for(let i = 0; i < 3;i++) {
            $.ajax({
                url: 'xxx',
                success: function(){
                    console.log(i);
                };
            });
    }
    

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你2017-06-30 10:01:41

    Ce que la personne qui pose la question veut demander concerne ES6怎么解决i不是当前的i`, n'est-ce pas ?

    à ES5中是使用闭包来解决的,在ES6中可以用let

    for(let i = 0; i < 3;i++) {
        $.ajax({
            url: 'xxx',
            success: function(){
                console.log(i);
            }
        });
    }

    répondre
    0
  • 学习ing

    学习ing2017-06-30 10:01:41

    C'est pareil avec ES6, les fermetures restent des fermetures.

    répondre
    0
  • 世界只因有你

    世界只因有你2017-06-30 10:01:41

    Mettre var 换成 let

    for(let i = 0; i < 3;i++) {
        $.ajax({
            url: 'xxx',
            success: function(){
                console.log(j);
            }
        })
    }

    Le test est le suivant (utilisez setTimeout pour simuler des requêtes asynchrones) :

    for(var i = 0; i < 3;i++) {
      setTimeout(function(){
        console.log(i)
      }, 123)
    }

    Imprimer 3 3

    ES5 est résolu avec fermeture

    for(var i = 0; i < 3;i++) {
      (function(i) {
        setTimeout(function(){
          console.log(i)
        }, 123)
      })(i)
    }

    es6 est facile avec let

    for(let i = 0; i < 3;i++) {
      setTimeout(function(){
        console.log(i)
      }, 123)
    }

    let Vous permet de déclarer une variable, une instruction ou une expression dont la portée est limitée au niveau du bloc

    répondre
    0
  • 阿神

    阿神2017-06-30 10:01:41

    J'ai aussi trouvé la réponse, ES6 peut supprimer directement les fermetures

    for(let i = 0; i < 3;i++) {
        $.ajax({
            url: 'xxx',
            success: function(){
                console.log(i);
            }
        });
    }

    Le résultat est le même qu'en utilisant la fermeture, merci à tous

    répondre
    0
  • PHP中文网

    PHP中文网2017-06-30 10:01:41

    Ce n'est absolument pas nécessaire dans ES6, laissez faire
    http://www.softwhy.com/articl...

    répondre
    0
  • Annulerrépondre