Heim > Fragen und Antworten > Hauptteil
So implementieren Sie den folgenden Code mit 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
题主想问的是,在ES6
中怎么解决
i不是当前的
i`的问题吧?
在ES5
中是使用闭包来解决的,在ES6
中可以用let
for(let i = 0; i < 3;i++) {
$.ajax({
url: 'xxx',
success: function(){
console.log(i);
}
});
}
世界只因有你2017-06-30 10:01:41
把 var
换成 let
for(let i = 0; i < 3;i++) {
$.ajax({
url: 'xxx',
success: function(){
console.log(j);
}
})
}
测试如下(用setTimeout模拟异步请求):
for(var i = 0; i < 3;i++) {
setTimeout(function(){
console.log(i)
}, 123)
}
打印3个3
es5用闭包解决
for(var i = 0; i < 3;i++) {
(function(i) {
setTimeout(function(){
console.log(i)
}, 123)
})(i)
}
es6用let就简单了
for(let i = 0; i < 3;i++) {
setTimeout(function(){
console.log(i)
}, 123)
}
let
允许你声明一个作用域被限制在块级中的变量、语句或者表达式
阿神2017-06-30 10:01:41
我也找到答案了,ES6可以直接去掉闭包
for(let i = 0; i < 3;i++) {
$.ajax({
url: 'xxx',
success: function(){
console.log(i);
}
});
}
这样跟用闭包的结果是一样的了,谢谢各位