Maison > Questions et réponses > le corps du texte
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);
})
}
给我你的怀抱2017-06-30 10:01:41
for(let i = 0; i < 3;i++) {
$.ajax({
url: 'xxx',
success: function(){
console.log(i);
};
});
}
我想大声告诉你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);
}
});
}
世界只因有你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
阿神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
PHP中文网2017-06-30 10:01:41
Ce n'est absolument pas nécessaire dans ES6, laissez faire
http://www.softwhy.com/articl...