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); }) }
for(let i = 0; i < 3;i++) { $.ajax({ url: 'xxx', success: function(){ console.log(i); }; }); }
题主想问的是,在ES6中怎么解决i不是当前的i`的问题吧?
ES6
怎么解决
不是当前的
在ES5中是使用闭包来解决的,在ES6中可以用let
ES5
let
for(let i = 0; i < 3;i++) { $.ajax({ url: 'xxx', success: function(){ console.log(i); } }); }
这个用 ES6 也是一样的啊,闭包还是闭包。
把 var 换成 let
var
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 允许你声明一个作用域被限制在块级中的变量、语句或者表达式
我也找到答案了,ES6可以直接去掉闭包
这样跟用闭包的结果是一样的了,谢谢各位
完全就没有必要了在ES6,直接let搞定http://www.softwhy.com/articl...
题主想问的是,在
ES6
中怎么解决
i不是当前的
i`的问题吧?在
ES5
中是使用闭包来解决的,在ES6
中可以用let
这个用 ES6 也是一样的啊,闭包还是闭包。
把
var
换成let
测试如下(用setTimeout模拟异步请求):
es5用闭包解决
es6用let就简单了
我也找到答案了,ES6可以直接去掉闭包
这样跟用闭包的结果是一样的了,谢谢各位
完全就没有必要了在ES6,直接let搞定
http://www.softwhy.com/articl...