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); }) }
for(let i = 0; i < 3;i++) { $.ajax({ url: 'xxx', success: function(){ console.log(i); }; }); }
Ce que la personne qui pose la question veut demander concerne ES6中怎么解决i不是当前的i`, n'est-ce pas ?
ES6
怎么解决
不是当前的
à ES5中是使用闭包来解决的,在ES6中可以用let
ES5
let
for(let i = 0; i < 3;i++) { $.ajax({ url: 'xxx', success: function(){ console.log(i); } }); }
C'est pareil avec ES6, les fermetures restent des fermetures.
Mettre var 换成 let
var
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
J'ai aussi trouvé la réponse, ES6 peut supprimer directement les fermetures
Le résultat est le même qu'en utilisant la fermeture, merci à tous
Ce n'est absolument pas nécessaire dans ES6, laissez fairehttp://www.softwhy.com/articl...
Ce que la personne qui pose la question veut demander concerne
ES6
中怎么解决
i不是当前的
i`, n'est-ce pas ?à
ES5
中是使用闭包来解决的,在ES6
中可以用let
C'est pareil avec ES6, les fermetures restent des fermetures.
Mettre
var
换成let
Le test est le suivant (utilisez setTimeout pour simuler des requêtes asynchrones) :
ES5 est résolu avec fermeture
es6 est facile avec let
J'ai aussi trouvé la réponse, ES6 peut supprimer directement les fermetures
Le résultat est le même qu'en utilisant la fermeture, merci à tous
Ce n'est absolument pas nécessaire dans ES6, laissez faire
http://www.softwhy.com/articl...