jQuery中的for循环var与let的区别


Posted in jQuery onApril 21, 2018

今天在写jQuery请求接口中发现一个问题:

   

在用AJAX发送请求中又嵌套了一个AJAX请求,发现在内层请求的success中对第一次success中的循环变量 i 无法获取,具体代码如下:

$.ajax({
    type: "get",
    url: "//////////////////////////",
    success: function (result) {
      rs = JSON.parse(result).data;
      for (var i = 0; i < rs.length; i++) { //用var定义有问题
        var pos_ = ""
        $.ajax({
          type: 'GET',
          async: false,
          dataType: 'jsonp',
          contentType: 'application/json; charset=utf-8',
          url: "///////////////////////////////////",
          success: function (result) {
            console.log(rs[i]) //报错
          }
        })
      }
    }
  })

在第二次的ajax请求后的回调函数中,rs[i]是会报错的。

  解决方案:

将for循环中声明变量var i 更改为let i

具体原因:

是第一次回调函数后的for循环中,如果你再次发送请求,for循环并不会停止,即使你写了同步请求也不行。

但是如果你在声明for循环变量用let后,代码会直到你请求完毕,回调函数执行完毕后,再进行下一次的循环。

这就考虑到了一个闭包的问题,如果你写var和let声明的作用域不同。

let i 会以局部变量的形式传递

var i 会以全局变量的形式传递

如果要想将 i 变量传递给下一层,要使用let 去声明。

总结

以上所述是小编给大家介绍的jQuery中的for循环var与let的区别 ,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

jQuery 相关文章推荐
关于jQuery库冲突的完美解决办法
May 20 jQuery
详谈表单格式化插件jquery.serializeJSON
Jun 23 jQuery
jQuery选择器之子元素过滤选择器
Sep 28 jQuery
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
Nov 10 jQuery
JQuery实现table中tr上移下移的示例(超简单)
Jan 08 jQuery
jQuery pagination分页示例详解
Oct 23 jQuery
jQuery+ajax实现批量删除功能完整示例
Jun 06 jQuery
JS 遍历 json 和 JQuery 遍历json操作完整示例
Nov 11 jQuery
jQuery 选择方法及$(this)用法实例分析
May 19 jQuery
jQuery实现移动端笔触canvas电子签名
May 21 jQuery
jQuery 实现DOM元素拖拽交换位置的实例代码
Jul 14 jQuery
jQuery实现影院选座订座效果
Apr 13 jQuery
jQuery中的$是什么意思及 $. 和 $().的区别
Apr 20 #jQuery
通过jquery获取上传文件名称、类型和大小的实现代码
Apr 19 #jQuery
jQuery滚动条美化插件nicescroll简单用法示例
Apr 18 #jQuery
jQuery实现的淡入淡出与滑入滑出效果示例
Apr 18 #jQuery
jQuery实现的手动拖动控制进度条效果示例【测试可用】
Apr 18 #jQuery
jQuery实现的两种简单弹窗效果示例
Apr 18 #jQuery
jQuery实现使用sort方法对json数据排序的方法
Apr 17 #jQuery
You might like
如何在PHP中进行身份认证
2006/10/09 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
php中的钩子理解及应用实例分析
2019/08/30 PHP
用JavaScript实现UrlEncode和UrlDecode的脚本代码
2008/07/23 Javascript
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
jQuery 对Select的操作备忘记录
2011/07/04 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
javascript控制swfObject应用介绍
2012/11/29 Javascript
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
Jquery实时监听input value的实例
2017/01/26 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
[05:46]2018完美盛典-《同梦共竞》
2018/12/17 DOTA
Python深入学习之上下文管理器
2014/08/31 Python
Python实现基于HTTP文件传输实例
2014/11/08 Python
python计算auc指标实例
2017/07/13 Python
Python自定义一个异常类的方法
2019/06/27 Python
python3.7 的新特性详解
2019/07/25 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
行政经理的岗位职责
2013/11/23 职场文书
楼面部长岗位职责范本
2014/02/14 职场文书
护士毕业实习感言
2014/03/05 职场文书
学生吸烟检讨书
2014/09/14 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL