javascript – So implementieren Sie ES5-Abschlüsse mit ES6
三叔
三叔 2017-06-30 09:59:41
0
6
866

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); }) }
三叔
三叔

Antworte allen (6)
给我你的怀抱
for(let i = 0; i < 3;i++) { $.ajax({ url: 'xxx', success: function(){ console.log(i); }; }); }
    我想大声告诉你

    题主想问的是,在ES6怎么解决i不是当前的i`的问题吧?

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

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

      这个用 ES6 也是一样的啊,闭包还是闭包。

        世界只因有你

        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允许你声明一个作用域被限制在块级中的变量、语句或者表达式

          阿神

          我也找到答案了,ES6可以直接去掉闭包

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

          这样跟用闭包的结果是一样的了,谢谢各位

            Ty80

            完全就没有必要了在ES6,直接let搞定
            http://www.softwhy.com/articl...

              Neueste Downloads
              Mehr>
              Web-Effekte
              Quellcode der Website
              Website-Materialien
              Frontend-Vorlage
              Über uns Haftungsausschluss Sitemap
              Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!